module Mustermann::Visualizer::Highlighter::Composite

@!visibility private

Public Instance Methods

highlight(pattern, renderer) click to toggle source

@!visibility private

# File lib/mustermann/visualizer/highlighter/composite.rb, line 16
def highlight(pattern, renderer)
  operator = " #{pattern.operator} "
  patterns = pattern.patterns.map { |p| highlight_nested(p, renderer) }.join(quote(renderer, operator))
  renderer.pre(:composite) + patterns + renderer.post(:composite)
end
highlight?(pattern) click to toggle source

@!visibility private

# File lib/mustermann/visualizer/highlighter/composite.rb, line 11
def highlight?(pattern)
  pattern.is_a? Mustermann::Composite
end
highlight_nested(pattern, renderer) click to toggle source

@!visibility private

# File lib/mustermann/visualizer/highlighter/composite.rb, line 23
def highlight_nested(pattern, renderer)
  highlighter = Highlighter.highlighter_for(pattern)
  if highlighter.respond_to? :nested_highlight
    highlighter.nested_highlight(pattern, renderer)
  else
    type  = quote(renderer, pattern.class.name[/[^:]+$/].downcase + ":", :type)
    quote = quote(renderer, ?")
    type + quote + highlighter.highlight(pattern, renderer) + quote
  end
end
nested_highlight(pattern, renderer) click to toggle source

@!visibility private

# File lib/mustermann/visualizer/highlighter/composite.rb, line 35
def nested_highlight(pattern, renderer)
  quote(renderer, ?() + highlight(pattern, renderer) + quote(renderer, ?))
end
quote(renderer, string, type = :quote) click to toggle source

@!visibility private

# File lib/mustermann/visualizer/highlighter/composite.rb, line 40
def quote(renderer, string, type = :quote)
  renderer.pre(type) + renderer.escape(string, string) + renderer.post(type)
end