8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/yard-sd/sequence_diagram_mixin.rb', line 8
def html_syntax_highlight_sd(source)
lines = source.split("\n")
metadata = lines.take_while {|l| l.start_with?("%")}
source = lines[metadata.size..-1].join("\n")
metadata_h = {}
metadata.each do |line|
if line =~ /^%\s*([^\s=]+)\s*=\s*(.+)$/
key = $1.to_sym
case key
when :size
metadata_h[key] = $2
end
end
end
begin
diagram = SequenceDiagram::Diagram.new.parse(source)
img = diagram.to_png(metadata_h)
name = "images/diagrams/diagram_#{diagram.uid}.png"
options[:serializer].serialize(name, img)
return "<img src='%s' alt='Sequence diagram' />" % url_for(name)
rescue SequenceDiagram::ParseError => e
return "Error: Parsing error: #{h(e.inspect)}"
rescue => e
return "Error: #{h(e.backtrace.inspect)}"
end
end
|