Sha256: 65f4410410e8d17ce49667046f1c3d97fa9b11a373ca3684c271a064196dfa28

Contents?: true

Size: 1.22 KB

Versions: 8

Compression:

Stored size: 1.22 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

8 entries across 8 versions & 1 rubygems

Version Path
mustermann-contrib-3.0.3 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-3.0.2 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-3.0.1 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-3.0.0 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-2.0.2 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-2.0.1 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-2.0.0 lib/mustermann/visualizer/highlighter.rb
mustermann-contrib-1.1.2 lib/mustermann/visualizer/highlighter.rb