Module: Markdoc::Sequence

Defined in:
lib/markdoc/sequence.rb

Defined Under Namespace

Classes: Message, Parser, Role

Class Method Summary collapse

Class Method Details

.draw(code, format = :svg) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/markdoc/sequence.rb', line 3

def self.draw(code, format = :svg)
  parser = Parser.new(code)

  digest = Digest::MD5.hexdigest code

  pic = nil
  Tempfile.open([digest, '.pic']) do |file|
    file.write parser.parse
    pic = file.path
  end

  if format == :pic
    return IO.read(pic)
  end

  image = Tempfile.new([digest, ".#{format}"])
  image.close

  if system("pic2plot -T#{format} #{pic} > #{image.path}")
    IO.read image
  else
    raise "Can't generate sequence diagram"
  end
end