diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index ff34921d..91793091 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -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 diff --git a/lib/linguist/pathname.rb b/lib/linguist/pathname.rb index af252c6f..749d43f6 100644 --- a/lib/linguist/pathname.rb +++ b/lib/linguist/pathname.rb @@ -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 diff --git a/test/test_language.rb b/test/test_language.rb index 1d329a90..4c578acd 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -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') diff --git a/test/test_pathname.rb b/test/test_pathname.rb index d3f68277..8aad93be 100644 --- a/test/test_pathname.rb +++ b/test/test_pathname.rb @@ -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