class SequenceDiagramGenerator
Public Class Methods
generate(runtime)
click to toggle source
# File lib/sequence_diagram_generator.rb, line 7 def self.generate runtime index = 0 total = runtime.sequences.length runtime.sequences.values.each do |sequence| index += 1 puts "Generating sequence diagram [#{index}/#{total}]: #{sequence.name}.png" generate_sequence sequence end end
generate_sequence(sequence)
click to toggle source
# File lib/sequence_diagram_generator.rb, line 17 def self.generate_sequence sequence file = "docs/diagrams/#{sequence.name}.png" text = make_code sequence response = Net::HTTP.post_form(URI.parse('http://www.websequencediagrams.com/index.php'), 'style' => 'omegapple', 'message' => text) if response.body =~ /img: "(.+)"/ url = "http://www.websequencediagrams.com/#{ $1 }" url.match(/(png)=(.+)$/) open url do |content| File.open file, 'wb' do |file| file.puts content.read end end end end
make_code(sequence)
click to toggle source
# File lib/sequence_diagram_generator.rb, line 32 def self.make_code sequence str = "title #{sequence.name} #{sequence.doc}\n" sequence.steps.each do |step| direction = step.direction head = '' case direction.direction when :left head = direction.server.name + ' -> ' + direction.client.name when :right head = direction.client.name + ' -> ' + direction.server.name end strParams = step.message.members.map { |m| m.name } .join ', ' str += head + ': ' + step.message.name + '(' + strParams + ') ' + step.doc + "\n" end str end