Sha256: e9a2e9d6b82f869b717236a170f8a40e90ff66de0416cc6063e801a6a127c89d

Contents?: true

Size: 1.23 KB

Versions: 9

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true
require 'mustermann/visualizer/highlighter/ast'
require 'mustermann/visualizer/highlighter/ad_hoc'
require 'mustermann/visualizer/highlighter/composite'
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

9 entries across 9 versions & 2 rubygems

Version Path
mustermann-contrib-1.1.1 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-1.1.0 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-1.0.3 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-1.0.2 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-1.0.2.rc2 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-1.0.2.rc1 lib/mustermann/visualizer/highlighter.rb
mustermann-1.0.2.rc1 mustermann-contrib/lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-1.0.1 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-1.0.0 lib/mustermann/visualizer/highlighter.rb