module Markdoc::Pseudocode
Public Class Methods
draw(code, format = :svg)
click to toggle source
# File lib/markdoc/pseudocode.rb, line 103 def self.draw(code, format = :svg) parser = PseudocodeParser.new tree = parser.parse(code) if(tree.nil?) puts parser.failure_reason raise "Can't generate graphviz code" else digest = Digest::MD5.hexdigest code graphviz = nil Tempfile.open([digest, '.gv']) do |file| file.write "digraph G {\n" tree.out(file) file.write "}\n" graphviz = file.path end if format == :graphviz return IO.read(graphviz) end image = Tempfile.new([digest, ".#{format}"]) image.close if system("dot -n -T#{format} -o#{image.path} #{graphviz}") IO.read image else raise "Can't generate flowchart" end end end