class Dogviz::SequenceRenderer

Attributes

lines[R]

Public Class Methods

new(title) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 8
def initialize(title)
  @lines = []
  @indents = 0
  @rendered_class = RenderedSequence
  add_title title
end

Public Instance Methods

divider(text) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 49
def divider(text)
  #nop
end
end_combination() click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 36
def end_combination
  @indents -= 1
  add_line 'end'
end
note(from, where, what) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 41
def note(from, where, what)
  add_line "note #{where} of #{escape from.name}"
  @indents += 1
  add_line what
  @indents -= 1
  add_line "end note"
end
render_edge(from, other, options) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 15
def render_edge(from, other, options)
  detail = options[:label]
  receiver_label = other.name
  sender_label = from.name
  annotations = nil
  if other.is_a?(Process)
    annotations = extract_annotations(detail, sender_label, receiver_label, other.description)
    receiver_label = process_start_label(receiver_label)
  elsif from.is_a?(Process)
    receiver_label = process_end_label(receiver_label)
  end
  line = "#{escape sender_label} -> #{escape receiver_label}: #{detail}"
  line = [ line, annotations ].join("\n") unless annotations.nil?
  add_line line
end
rendered() click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 53
def rendered
  @rendered_class.new lines
end
start_combination(operator, guard) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 31
def start_combination(operator, guard)
  add_line "#{operator} #{escape guard}"
  @indents += 1
end

Private Instance Methods

add_line(line) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 59
def add_line(line)
  lines << ('  ' * @indents + line)
end
add_title(title) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 63
def add_title(title)
  add_line "title #{title}"
end
escape(s) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 81
def escape(s)
  if (/\s/).match(s)
    "\"#{s}\""
  else
     s
  end
end
extract_annotations(detail, sender, receiver, process_description) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 75
def extract_annotations(detail, sender, receiver, process_description)
  [ "note right of #{escape receiver}",
    "  #{escape process_description}",
    'end note' ].join("\n")
end
process_end_label(receiver_label) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 71
def process_end_label(receiver_label)
  "-#{receiver_label}"
end
process_start_label(receiver_label) click to toggle source
# File lib/dogviz/sequence_renderer.rb, line 67
def process_start_label(receiver_label)
  "+#{receiver_label}"
end