mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Large blobs should be binary
This commit is contained in:
		| @@ -92,8 +92,22 @@ module Linguist | ||||
|     # | ||||
|     # Return true or false | ||||
|     def binary? | ||||
|       return false if data.empty? | ||||
|       encoding.nil? || detect_encoding[:type] == :binary | ||||
|       # Large blobs aren't even loaded into memory | ||||
|       if data.nil? | ||||
|         true | ||||
|  | ||||
|       # Treat blank files as text | ||||
|       elsif data == "" | ||||
|         false | ||||
|  | ||||
|       # Charlock doesn't know what to think | ||||
|       elsif encoding.nil? | ||||
|         true | ||||
|  | ||||
|       # If Charlock says its binary | ||||
|       else | ||||
|         detect_encoding[:type] == :binary | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     # Public: Is the blob text? | ||||
|   | ||||
| @@ -84,6 +84,13 @@ class TestBlob < Test::Unit::TestCase | ||||
|   end | ||||
|  | ||||
|   def test_binary | ||||
|     # Large blobs aren't loaded | ||||
|     large_blob = blob("git.exe") | ||||
|     large_blob.instance_eval do | ||||
|       def data; end | ||||
|     end | ||||
|     assert large_blob.binary? | ||||
|  | ||||
|     assert blob("git.deb").binary? | ||||
|     assert blob("git.exe").binary? | ||||
|     assert blob("hello.pbc").binary? | ||||
|   | ||||
		Reference in New Issue
	
	Block a user