Sha256: 1b42aa6ec6398361d284d2049249c443cf1637b042cad6e39dc01d6b29668805

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

require 'mustermann/visualizer/highlighter/ast'
require 'mustermann/visualizer/highlighter/ad_hoc'
require 'mustermann/visualizer/highlighter/dummy'
require 'mustermann/visualizer/highlighter/regular'

module Mustermann
  module Visualizer
    # @!visibility private
    module Highlighter
      extend self

      # @return [String] highlighted string
      # @!visibility private
      def highlight(pattern, renderer)
        highlighter_for(pattern).highlight(pattern, renderer)
      end

      # @return [#highlight] Highlighter for given pattern
      # @!visibility private
      def highlighter_for(pattern)
        return pattern.highlighter if pattern.respond_to? :highlighter and pattern.highlighter
        consts      = constants.map { |name| const_get(name) }
        highlighter = consts.detect { |c| c.respond_to? :highlight? and c.highlight? pattern }
        highlighter || Dummy
      end

      # Used to generate highlighting rules on the fly.
      # @see {Mustermann::Shell#highlighter}
      # @see {Mustermann::Simple#highlighter}
      # @!visibility private
      def create(&block)
        Class.new(AdHoc, &block)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mustermann-visualizer-0.4.0 lib/mustermann/visualizer/highlighter.rb