Sha256: fade6eb3fb99ab5c93b274eb32965749ea97677f011c216029adf8c86edf5318

Contents?: true

Size: 579 Bytes

Versions: 2

Compression:

Stored size: 579 Bytes

Contents

require 'rouge'

module CabbageDoc
  class Highlighter
    attr_accessor :formatter, :lexers

    def initialize(options = {})
      self.formatter = Rouge::Formatters::HTMLLegacy.new({ css_class: 'highlight' }.merge(options))
      self.lexers = {}
    end

    def format(text, type = 'txt')
      formatter.format(find_lexer(text, type).lex(text))
    end

    private

    def find_lexer(text, type)
      self.lexers[type.to_sym] ||= Rouge::Lexer.guess(source: text,
                                                      filename: "highlight.#{type}").new
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cabbage_doc-0.1.4 lib/cabbage_doc/highlighter.rb
cabbage_doc-0.1.3 lib/cabbage_doc/highlighter.rb