mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Merge pull request #1683 from github/find-by-ext
Extract Language.find_by_extension
This commit is contained in:
		| @@ -194,9 +194,25 @@ module Linguist | |||||||
|     def self.find_by_filename(filename) |     def self.find_by_filename(filename) | ||||||
|       basename = File.basename(filename) |       basename = File.basename(filename) | ||||||
|       extname = FileBlob.new(filename).extension |       extname = FileBlob.new(filename).extension | ||||||
|       langs = @filename_index[basename] + |       (@filename_index[basename] + find_by_extension(extname)).compact.uniq | ||||||
|               @extension_index[extname] |     end | ||||||
|       langs.compact.uniq |  | ||||||
|  |     # Public: Look up Languages by file extension. | ||||||
|  |     # | ||||||
|  |     # extname - The extension String. | ||||||
|  |     # | ||||||
|  |     # Examples | ||||||
|  |     # | ||||||
|  |     #   Language.find_by_extension('.rb') | ||||||
|  |     #   # => [#<Language name="Ruby">] | ||||||
|  |     # | ||||||
|  |     #   Language.find_by_extension('rb') | ||||||
|  |     #   # => [#<Language name="Ruby">] | ||||||
|  |     # | ||||||
|  |     # Returns all matching Languages or [] if none were found. | ||||||
|  |     def self.find_by_extension(extname) | ||||||
|  |       extname = ".#{extname}" unless extname.start_with?(".") | ||||||
|  |       @extension_index[extname] | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     # Public: Look up Languages by shebang line. |     # Public: Look up Languages by shebang line. | ||||||
|   | |||||||
| @@ -241,6 +241,22 @@ class TestLanguage < Test::Unit::TestCase | |||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   def test_find_by_extension | ||||||
|  |     assert_equal [], Language.find_by_extension('.factor-rc') | ||||||
|  |     assert_equal [], Language.find_by_extension('foo.rb') | ||||||
|  |     assert_equal [Language['Ruby']], Language.find_by_extension('rb') | ||||||
|  |     assert_equal [Language['Ruby']], Language.find_by_extension('.rb') | ||||||
|  |     assert_equal [Language['M'], Language['Mathematica'], Language['Matlab'], Language['Mercury'], Language['Objective-C']], Language.find_by_extension('.m') | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def test_find_all_by_extension | ||||||
|  |     Language.all.each do |language| | ||||||
|  |       language.extensions.each do |extension| | ||||||
|  |         assert_include Language.find_by_extension(extension), language | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  |  | ||||||
|   def test_find_by_filename |   def test_find_by_filename | ||||||
|     assert_equal [Language['Shell']], Language.find_by_filename('PKGBUILD') |     assert_equal [Language['Shell']], Language.find_by_filename('PKGBUILD') | ||||||
|     assert_equal [Language['Ruby']], Language.find_by_filename('foo.rb') |     assert_equal [Language['Ruby']], Language.find_by_filename('foo.rb') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user