class Rouge::Guessers::Modeline
Constants
- EMACS_MODELINE
- jneen
-
regexen stolen from linguist
- MODELINES
- VIM_MODELINE_1
First form vim modeline [text]white}{vi:|vim:|ex:{options} ex: ‘vim: syntax=ruby’
- VIM_MODELINE_2
Second form vim modeline (compatible with some versions of Vi)
- text]white}{vi:|vim:|Vim:|ex:se[t
-
{options}:[text]
ex: ‘vim set syntax=ruby:’
Public Class Methods
new(source, opts={})
click to toggle source
# File lib/rouge/guessers/modeline.rb, line 23 def initialize(source, opts={}) @source = source @lines = opts[:lines] || 5 end
Public Instance Methods
filter(lexers)
click to toggle source
# File lib/rouge/guessers/modeline.rb, line 28 def filter(lexers) # don't bother reading the stream if we've already decided return lexers if lexers.size == 1 source_text = get_source(@source) lines = source_text.split(/\n/) search_space = (lines.first(@lines) + lines.last(@lines)).join("\n") matches = MODELINES.map { |re| re.match(search_space) }.compact return lexers unless matches.any? match_set = Set.new(matches.map { |m| m[1] }) lexers.select { |l| match_set.include?(l.tag) || l.aliases.any? { |a| match_set.include?(a) } } end