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:-]+/