From b954d22eba18b4ab8d52f81b3338a4eb1d7fbe1e Mon Sep 17 00:00:00 2001 From: Simon Hafner Date: Thu, 13 Sep 2012 14:55:31 -0500 Subject: [PATCH] Override for binary mime type based on languages.yml If the extension already exists in languages.yml, it's probably not a binary, but code. --- lib/linguist/blob_helper.rb | 9 +++++++++ lib/linguist/repository.rb | 4 ++-- test/test_repository.rb | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/linguist/blob_helper.rb b/lib/linguist/blob_helper.rb index b0a20626..2103f9e0 100644 --- a/lib/linguist/blob_helper.rb +++ b/lib/linguist/blob_helper.rb @@ -58,6 +58,15 @@ module Linguist _mime_type ? _mime_type.binary? : false end + # Internal: Is the blob binary according to its mime type, + # overriding it if we have better data from the languages.yml + # database. + # + # Return true or false + def likely_binary? + binary_mime_type? and not Language.find_by_filename(name) + end + # Public: Get the Content-Type header value # # This value is used when serving raw blobs. diff --git a/lib/linguist/repository.rb b/lib/linguist/repository.rb index 20b59700..5c1ffdaf 100644 --- a/lib/linguist/repository.rb +++ b/lib/linguist/repository.rb @@ -67,8 +67,8 @@ module Linguist return if @computed_stats @enum.each do |blob| - # Skip binary file extensions - next if blob.binary_mime_type? + # Skip files that are likely binary + next if blob.likely_binary? # Skip vendored or generated blobs next if blob.vendored? || blob.generated? || blob.language.nil? diff --git a/test/test_repository.rb b/test/test_repository.rb index 0dd29222..26025c09 100644 --- a/test/test_repository.rb +++ b/test/test_repository.rb @@ -24,4 +24,8 @@ class TestRepository < Test::Unit::TestCase def test_linguist_size assert linguist_repo.size > 30_000 end + + def test_binary_override + assert_equal repo(File.expand_path("../../samples/Nimrod", __FILE__)).language, Language["Nimrod"] + end end