From 876265e8f3489e4e491ed2e7ba1870889aa2c98d Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sat, 18 Jun 2011 21:49:02 -0500 Subject: [PATCH] Return nil if no Language if found --- lib/linguist/blob_helper.rb | 49 +++++++++++++------------------------ lib/linguist/repository.rb | 2 +- test/test_blob.rb | 4 +-- 3 files changed, 20 insertions(+), 35 deletions(-) diff --git a/lib/linguist/blob_helper.rb b/lib/linguist/blob_helper.rb index bcc79902..09288432 100644 --- a/lib/linguist/blob_helper.rb +++ b/lib/linguist/blob_helper.rb @@ -222,9 +222,9 @@ module Linguist # # Return true or false def indexable? - if !text? + if binary? false - elsif !language? + elsif language.nil? false elsif !language.searchable? false @@ -241,50 +241,36 @@ module Linguist # # May load Blob#data # - # Returns a Language object + # Returns a Language or nil if none is detected def language - guess_language || Language['Text'] + if defined? @language + @language + else + @language = guess_language + end end # Internal: Guess language # # Returns a Language or nil def guess_language - if text? - # If its a header file (.h) try to guess the language - if language = header_language - language + return if binary? + + # If its a header file (.h) try to guess the language + header_language || # See if there is a Language for the extension - elsif language = pathname.language - language + pathname.language || # Try to detect Language from shebang line - elsif language = shebang_language - language - - else - nil - end - else - nil - end + shebang_language end - # Internal: Has a language. - # - # 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. + # Internal: Get the lexer of the blob. # # Returns a Lexer. def lexer - language.lexer + language ? language.lexer : Lexer['Text only'] end # Internal: Guess language of header files (.h). @@ -350,8 +336,7 @@ module Linguist # Returns the Language or nil def shebang_language if script = shebang_script - lang = Language[script] - lang != Language['Text'] ? lang : nil + Language[script] end end diff --git a/lib/linguist/repository.rb b/lib/linguist/repository.rb index 87a0ca3e..2c00cf69 100644 --- a/lib/linguist/repository.rb +++ b/lib/linguist/repository.rb @@ -91,7 +91,7 @@ module Linguist language = blob.language # Only include common langauges - if language.common? + if language && language.common? @sizes[language] += blob.size end end diff --git a/test/test_blob.rb b/test/test_blob.rb index a573e79f..6cc8511f 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -222,7 +222,7 @@ class TestBlob < Test::Unit::TestCase assert_equal Language['Ruby'], blob("foo.rb").language assert_equal Language['Ruby'], blob("script.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 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['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 assert_equal Language['XQuery'], blob("xproc.xqm").language