Sha256: c34135d742d1cb68aff4f3c88b8562de1756f25b2b0a0362ff7f61ea232f2f25
Contents?: true
Size: 1.48 KB
Versions: 17
Compression:
Stored size: 1.48 KB
Contents
# frozen_string_literal: true module Mustermann module Visualizer # @!visibility private module Highlighter # @!visibility private module Composite extend self # @!visibility private def highlight?(pattern) pattern.is_a? Mustermann::Composite end # @!visibility private 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 # @!visibility private 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 # @!visibility private def nested_highlight(pattern, renderer) quote(renderer, ?() + highlight(pattern, renderer) + quote(renderer, ?)) end # @!visibility private def quote(renderer, string, type = :quote) renderer.pre(type) + renderer.escape(string, string) + renderer.post(type) end end end end end
Version data entries
17 entries across 17 versions & 2 rubygems