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