diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index 694ccf31..20241232 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -26,7 +26,11 @@ module Linguist @name_index[name.downcase] end - def self.find_by_extension(filename) + def self.find_by_extension(extension) + @extension_index[extension] + end + + def self.find_by_filename(filename) basename = File.basename(filename) if basename[0] == ?. @@ -37,7 +41,7 @@ module Linguist ext = basename end - @extension_index[ext] + find_by_extension(ext) end attr_reader :name, :extensions diff --git a/test/test_language.rb b/test/test_language.rb index 686486a7..c5d6e477 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -16,14 +16,20 @@ class TestLanguage < Test::Unit::TestCase ruby = Language['Ruby'] assert_equal ruby, Language.find_by_extension('.rb') assert_equal ruby, Language.find_by_extension('rb') - assert_equal ruby, Language.find_by_extension('foo.rb') - assert_equal ruby, Language.find_by_extension('./foo.rb') - assert_equal ruby, Language.find_by_extension('foo/bar.rb') + assert_nil Language.find_by_extension('foo.rb') + end - # TODO: Review questionable usage - assert_equal ruby, Language.find_by_extension('Rakefile') - assert_equal ruby, Language.find_by_extension('vendor/Rakefile') - assert_equal ruby, Language.find_by_extension('./Rakefile') + def test_find_by_filename + ruby = Language['Ruby'] + assert_equal ruby, Language.find_by_filename('.rb') + assert_equal ruby, Language.find_by_filename('rb') + assert_equal ruby, Language.find_by_filename('foo.rb') + assert_equal ruby, Language.find_by_filename('./foo.rb') + assert_equal ruby, Language.find_by_filename('foo/bar.rb') + + assert_equal ruby, Language.find_by_filename('Rakefile') + assert_equal ruby, Language.find_by_filename('vendor/Rakefile') + assert_equal ruby, Language.find_by_filename('./Rakefile') end def test_name