Add Language#find_by_lexer

This commit is contained in:
Joshua Peek
2011-05-09 23:31:57 -05:00
parent 7c0fe466a4
commit c37c10a4ab
2 changed files with 22 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ require 'yaml'
module Linguist
class Language
@name_index = {}
@lexer_index = {}
@extension_index = {}
def self.create(attributes = {})
@@ -10,6 +11,10 @@ module Linguist
@name_index[language.name.downcase] = language
if language.default_lexer? || !@lexer_index.key?(language.lexer)
@lexer_index[language.lexer] = language
end
language.extensions.each do |extension|
@extension_index[extension] = language
@extension_index[extension.sub(/^./, '')] = language
@@ -44,6 +49,10 @@ module Linguist
find_by_extension(ext)
end
def self.find_by_lexer(lexer)
@lexer_index[lexer]
end
def initialize(attributes = {})
@name = attributes[:name] || raise(ArgumentError, "missing name")
@lexer = attributes[:lexer] || default_lexer
@@ -55,6 +64,10 @@ module Linguist
def default_lexer
name.downcase.gsub(/\s/, '-')
end
def default_lexer?
lexer == default_lexer
end
end
YAML.load_file(File.expand_path("../extensions.yml", __FILE__)).each do |name, options|