Replace Language#find_by_filename with Pathname#language

This commit is contained in:
Joshua Peek
2011-05-10 09:40:35 -05:00
parent 86c67f4b6f
commit de8bf008ef
4 changed files with 51 additions and 32 deletions

View File

@@ -35,20 +35,6 @@ module Linguist
@extension_index[extension]
end
def self.find_by_filename(filename)
basename = File.basename(filename)
if basename[0] == ?.
ext = basename
elsif basename.include?('.')
ext = File.extname(basename)
else
ext = basename
end
find_by_extension(ext)
end
def self.find_by_lexer(lexer)
@lexer_index[lexer]
end

View File

@@ -4,6 +4,24 @@ module Linguist
@path = path
end
def basename
File.basename(@path)
end
def extname
if basename[0] == ?.
basename
elsif basename.include?('.')
File.extname(basename)
else
basename
end
end
def language
Language.find_by_extension(extname)
end
def to_s
@path.dup
end

View File

@@ -19,24 +19,6 @@ class TestLanguage < Test::Unit::TestCase
assert_nil Language.find_by_extension('foo.rb')
end
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')
assert_equal Language['Gentoo Ebuild'], Language.find_by_filename('file.ebuild')
assert_equal Language['Python'], Language.find_by_filename('itty.py')
assert_equal Language['Nu'], Language.find_by_filename('itty.nu')
assert_nil Language.find_by_filename('defun.kt')
end
def test_find_by_lexer
assert_equal Language['Perl'], Language.find_by_lexer('perl')
assert_equal Language['Python'], Language.find_by_lexer('python')

View File

@@ -8,4 +8,37 @@ class TestPathname < Test::Unit::TestCase
def test_to_s
assert_equal "file.rb", Pathname.new("file.rb").to_s
end
def test_basename
assert_equal 'file.rb', Pathname.new("file.rb").basename
assert_equal 'file.rb', Pathname.new("./file.rb").basename
assert_equal 'file.rb', Pathname.new("sub/dir/file.rb").basename
end
def test_extname
assert_equal '.rb', Pathname.new(".rb").extname
assert_equal '.rb', Pathname.new("file.rb").extname
assert_equal '.rb', Pathname.new("./file.rb").extname
assert_equal '.rb', Pathname.new("sub/dir/file.rb").extname
assert_equal 'Rakefile', Pathname.new("Rakefile").extname
assert_equal 'Rakefile', Pathname.new("./Rakefile").extname
assert_equal 'Rakefile', Pathname.new("vendor/Rakefile").extname
end
def test_language
assert_equal Language['Ruby'], Pathname.new(".rb").language
assert_equal Language['Ruby'], Pathname.new("file.rb").language
assert_equal Language['Ruby'], Pathname.new("./file.rb").language
assert_equal Language['Ruby'], Pathname.new("sub/dir/file.rb").language
assert_equal Language['Ruby'], Pathname.new("Rakefile").language
assert_equal Language['Ruby'], Pathname.new("vendor/Rakefile").language
assert_equal Language['Ruby'], Pathname.new("./Rakefile").language
assert_equal Language['Gentoo Ebuild'], Pathname.new("file.ebuild").language
assert_equal Language['Python'], Pathname.new("itty.py").language
assert_equal Language['Nu'], Pathname.new("itty.nu").language
assert_nil Pathname.new("defun.kt").language
end
end