Class: SequenceDiagramGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/sequence_diagram_generator.rb

Class Method Summary collapse

Class Method Details

.generate(runtime) ⇒ Object



7
8
9
10
11
12
13
14
15
# 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) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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