mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Return nil if no Language if found
This commit is contained in:
		| @@ -222,9 +222,9 @@ module Linguist | |||||||
|     # |     # | ||||||
|     # Return true or false |     # Return true or false | ||||||
|     def indexable? |     def indexable? | ||||||
|       if !text? |       if binary? | ||||||
|         false |         false | ||||||
|       elsif !language? |       elsif language.nil? | ||||||
|         false |         false | ||||||
|       elsif !language.searchable? |       elsif !language.searchable? | ||||||
|         false |         false | ||||||
| @@ -241,50 +241,36 @@ module Linguist | |||||||
|     # |     # | ||||||
|     # May load Blob#data |     # May load Blob#data | ||||||
|     # |     # | ||||||
|     # Returns a Language object |     # Returns a Language or nil if none is detected | ||||||
|     def language |     def language | ||||||
|       guess_language || Language['Text'] |       if defined? @language | ||||||
|  |         @language | ||||||
|  |       else | ||||||
|  |         @language = guess_language | ||||||
|  |       end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     # Internal: Guess language |     # Internal: Guess language | ||||||
|     # |     # | ||||||
|     # Returns a Language or nil |     # Returns a Language or nil | ||||||
|     def guess_language |     def guess_language | ||||||
|       if text? |       return if binary? | ||||||
|  |  | ||||||
|       # If its a header file (.h) try to guess the language |       # If its a header file (.h) try to guess the language | ||||||
|         if language = header_language |       header_language || | ||||||
|           language |  | ||||||
|  |  | ||||||
|         # See if there is a Language for the extension |         # See if there is a Language for the extension | ||||||
|         elsif language = pathname.language |         pathname.language || | ||||||
|           language |  | ||||||
|  |  | ||||||
|         # Try to detect Language from shebang line |         # Try to detect Language from shebang line | ||||||
|         elsif language = shebang_language |         shebang_language | ||||||
|           language |  | ||||||
|  |  | ||||||
|         else |  | ||||||
|           nil |  | ||||||
|         end |  | ||||||
|       else |  | ||||||
|         nil |  | ||||||
|       end |  | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     # Internal: Has a language. |     # Internal: Get the lexer of the blob. | ||||||
|     # |  | ||||||
|     # Will return false if language was guessed to be Text. |  | ||||||
|     # |  | ||||||
|     # Returns true or false. |  | ||||||
|     def language? |  | ||||||
|       guess_language ? true : false |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Deprecated: Get the lexer of the blob. |  | ||||||
|     # |     # | ||||||
|     # Returns a Lexer. |     # Returns a Lexer. | ||||||
|     def lexer |     def lexer | ||||||
|       language.lexer |       language ? language.lexer : Lexer['Text only'] | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     # Internal: Guess language of header files (.h). |     # Internal: Guess language of header files (.h). | ||||||
| @@ -350,8 +336,7 @@ module Linguist | |||||||
|     # Returns the Language or nil |     # Returns the Language or nil | ||||||
|     def shebang_language |     def shebang_language | ||||||
|       if script = shebang_script |       if script = shebang_script | ||||||
|         lang = Language[script] |         Language[script] | ||||||
|         lang != Language['Text'] ? lang : nil |  | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|   | |||||||
| @@ -91,7 +91,7 @@ module Linguist | |||||||
|         language = blob.language |         language = blob.language | ||||||
|  |  | ||||||
|         # Only include common langauges |         # Only include common langauges | ||||||
|         if language.common? |         if language && language.common? | ||||||
|           @sizes[language] += blob.size |           @sizes[language] += blob.size | ||||||
|         end |         end | ||||||
|       end |       end | ||||||
|   | |||||||
| @@ -222,7 +222,7 @@ class TestBlob < Test::Unit::TestCase | |||||||
|     assert_equal Language['Ruby'],        blob("foo.rb").language |     assert_equal Language['Ruby'],        blob("foo.rb").language | ||||||
|     assert_equal Language['Ruby'],        blob("script.rb").language |     assert_equal Language['Ruby'],        blob("script.rb").language | ||||||
|     assert_equal Language['Ruby'],        blob("wrong_shebang.rb").language |     assert_equal Language['Ruby'],        blob("wrong_shebang.rb").language | ||||||
|     assert_equal Language['Text'],        blob("octocat.png").language |     assert_nil blob("octocat.png").language | ||||||
|  |  | ||||||
|     # ML |     # ML | ||||||
|     assert_equal Language['OCaml'],       blob("Foo.ml").language |     assert_equal Language['OCaml'],       blob("Foo.ml").language | ||||||
| @@ -240,7 +240,7 @@ class TestBlob < Test::Unit::TestCase | |||||||
|     assert_equal Language['VimL'],  blob(".vimrc").language |     assert_equal Language['VimL'],  blob(".vimrc").language | ||||||
|     assert_equal Language['YAML'],  blob(".gemrc").language |     assert_equal Language['YAML'],  blob(".gemrc").language | ||||||
|  |  | ||||||
|     assert_equal Language['Text'], blob("README").language |     assert_nil blob("README").language | ||||||
|  |  | ||||||
|     # https://github.com/xquery/xprocxq/blob/master/src/xquery/xproc.xqm |     # https://github.com/xquery/xprocxq/blob/master/src/xquery/xproc.xqm | ||||||
|     assert_equal Language['XQuery'], blob("xproc.xqm").language |     assert_equal Language['XQuery'], blob("xproc.xqm").language | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user