lib/rouge/lexer.rb in rouge-0.5.3 vs lib/rouge/lexer.rb in rouge-0.5.4

- old
+ new

@@ -161,11 +161,12 @@ guess :source => source end private def filter_by_mimetype(lexers, mt) - lexers.select { |lexer| lexer.mimetypes.include? mt } + filtered = lexers.select { |lexer| lexer.mimetypes.include? mt } + filtered.any? ? filtered : lexers end # returns a list of lexers that match the given filename with # equal specificity (i.e. number of wildcards in the pattern). # This helps disambiguate between, e.g. the Nginx lexer, which @@ -193,13 +194,22 @@ elsif score == best_seen out << lexer end end - out + out.any? ? out : lexers end def best_by_source(lexers, source, threshold=0) + source = case source + when String + source + when ->(s){ s.respond_to? :read } + source.read + else + raise 'invalid source' + end + assert_utf8!(source) source = TextAnalyzer.new(source) best_result = threshold