Extract a separate method for find_by_filename

This commit is contained in:
Joshua Peek
2011-05-09 23:06:58 -05:00
parent fdc8f18c52
commit 09618cfed5
2 changed files with 19 additions and 9 deletions

View File

@@ -26,7 +26,11 @@ module Linguist
@name_index[name.downcase] @name_index[name.downcase]
end 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) basename = File.basename(filename)
if basename[0] == ?. if basename[0] == ?.
@@ -37,7 +41,7 @@ module Linguist
ext = basename ext = basename
end end
@extension_index[ext] find_by_extension(ext)
end end
attr_reader :name, :extensions attr_reader :name, :extensions

View File

@@ -16,14 +16,20 @@ class TestLanguage < Test::Unit::TestCase
ruby = Language['Ruby'] 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('rb') assert_equal ruby, Language.find_by_extension('rb')
assert_equal ruby, Language.find_by_extension('foo.rb') assert_nil Language.find_by_extension('foo.rb')
assert_equal ruby, Language.find_by_extension('./foo.rb') end
assert_equal ruby, Language.find_by_extension('foo/bar.rb')
# TODO: Review questionable usage def test_find_by_filename
assert_equal ruby, Language.find_by_extension('Rakefile') ruby = Language['Ruby']
assert_equal ruby, Language.find_by_extension('vendor/Rakefile') assert_equal ruby, Language.find_by_filename('.rb')
assert_equal ruby, Language.find_by_extension('./Rakefile') 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 end
def test_name def test_name