diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index 49c4a6be..49c10bf7 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -62,7 +62,7 @@ module Linguist end # Language name index - @index[language.name] = @name_index[language.name] = language + @index[language.name.downcase] = @name_index[language.name.downcase] = language language.aliases.each do |name| # All Language aliases should be unique. Raise if there is a duplicate. @@ -70,7 +70,7 @@ module Linguist raise ArgumentError, "Duplicate alias: #{name}" end - @index[name] = @alias_index[name] = language + @index[name.downcase] = @alias_index[name.downcase] = language end language.extensions.each do |extension| @@ -164,7 +164,7 @@ module Linguist # # Returns the Language or nil if none was found. def self.find_by_name(name) - @name_index[name] + @name_index[name.downcase] end # Public: Look up Language by one of its aliases. @@ -178,7 +178,7 @@ module Linguist # # Returns the Lexer or nil if none was found. def self.find_by_alias(name) - @alias_index[name] + @alias_index[name.downcase] end # Public: Look up Languages by filename. @@ -227,7 +227,7 @@ module Linguist # # Returns the Language or nil if none was found. def self.[](name) - @index[name] + @index[name.downcase] end # Public: A List of popular languages diff --git a/test/test_language.rb b/test/test_language.rb index f2bbfc8b..0039dc2b 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -303,6 +303,21 @@ class TestLanguage < Test::Unit::TestCase assert_nil Language['defunkt'] end + def test_find_ignores_case + assert_equal 'AGS Script', Language['ags script'].name + assert_equal 'AGS Script', Language['ags sCRIPT'].name + end + + def test_find_by_name_ignores_case + assert_equal 'AGS Script', Language.find_by_name('ags script').name + assert_equal 'AGS Script', Language.find_by_name('ags sCRIPT').name + end + + def test_find_by_alias_ignores_case + refute_includes Language['AGS Script'].aliases, 'AGS' + assert_equal 'AGS Script', Language.find_by_alias('AGS').name + end + def test_name assert_equal 'Perl', Language['Perl'].name assert_equal 'Python', Language['Python'].name