lib/rouge/lexers/haml.rb in rouge-2.0.7 vs lib/rouge/lexers/haml.rb in rouge-2.1.0

- old
+ new

@@ -18,51 +18,46 @@ def self.analyze_text(text) return 0.1 if text.start_with? '!!!' end + option 'filters[filter_name]', 'Mapping of lexers to use for haml :filters' + attr_reader :filters # @option opts :filters # A hash of filter name to lexer of how various filters should be # highlighted. By default, :javascript, :css, :ruby, and :erb # are supported. def initialize(opts={}) - (opts.delete(:filters) || {}).each do |name, lexer| - unless lexer.respond_to? :lex - lexer = Lexer.find(lexer) or raise "unknown lexer: #{lexer}" - lexer = lexer.new(options) - end + super - self.filters[name.to_s] = lexer - end + default_filters = { + 'javascript' => Javascript.new(options), + 'css' => CSS.new(options), + 'ruby' => ruby, + 'erb' => ERB.new(options), + 'markdown' => Markdown.new(options), + 'sass' => Sass.new(options), + # TODO + # 'textile' => Textile.new(options), + # 'maruku' => Maruku.new(options), + } - super(opts) + @filters = hash_option(:filters, default_filters) do |v| + as_lexer(v) || PlainText.new(@options) + end end def ruby - @ruby ||= Ruby.new(options) + @ruby ||= Ruby.new(@options) end def html - @html ||= HTML.new(options) + @html ||= HTML.new(@options) end def ruby!(state) ruby.reset! push state - end - - def filters - @filters ||= { - 'javascript' => Javascript.new(options), - 'css' => CSS.new(options), - 'ruby' => ruby, - 'erb' => ERB.new(options), - 'markdown' => Markdown.new(options), - # TODO - # 'sass' => Sass.new(options), - # 'textile' => Textile.new(options), - # 'maruku' => Maruku.new(options), - } end start { ruby.reset!; html.reset! } identifier = /[\w:-]+/