Files
linguist/lib/linguist/strategy/modeline.rb
Arfon Smith 20a3e7e4b8 Update docs
2015-01-26 16:12:20 -06:00

32 lines
917 B
Ruby

module Linguist
module Strategy
class Modeline
# Public: Detects language based on Vim and Emacs modelines
#
# blob - An object that quacks like a blob.
#
# Examples
#
# Modeline.call(FileBlob.new("path/to/file"))
#
# Returns an Array with one Language if the blob has a Vim or Emacs modeline
# that matches a Language name or alias. Returns an empty array if no match.
def self.call(blob, _ = nil)
if language = Language.find_by_alias(modeline(blob.data))
return [language]
else
return []
end
end
# Public: Get the modeline from the first n-lines of the file
#
# Returns a String or nil
def self.modeline(data)
data.lines.first(5).any? { |l| l.match(/\W(?:filetype=|ft=|-\*- mode:|-\*-)\s*(\w+)/) }
lang = $1
end
end
end
end