Add Language#find_by_extension

This commit is contained in:
Joshua Peek
2011-05-09 22:56:28 -05:00
parent 80ff3883ac
commit 6041dda7ca
2 changed files with 41 additions and 6 deletions

View File

@@ -2,22 +2,42 @@ require 'yaml'
module Linguist
class Language
@name_index = {}
@name_index = {}
@extension_index = {}
def self.create(attributes = {})
language = new(attributes)
@name_index[language.name.downcase] = language
language.extensions.each do |extension|
@extension_index[extension] = language
@extension_index[extension.sub(/^./, '')] = language
end
language
end
def self.[](name)
find_by_name(name)
end
def self.find_by_name(name)
@name_index[name.downcase]
end
def self.[](name)
find_by_name(name)
def self.find_by_extension(filename)
basename = File.basename(filename)
if basename[0] == ?.
ext = basename
elsif basename.include?('.')
ext = File.extname(basename)
else
ext = basename
end
@extension_index[ext]
end
attr_reader :name, :extensions