Return nil if no Language if found

This commit is contained in:
Joshua Peek
2011-06-18 21:49:02 -05:00
parent 063bf21c66
commit 876265e8f3
3 changed files with 20 additions and 35 deletions

View File

@@ -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 language = header_language # If its a header file (.h) try to guess the language
language header_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

View File

@@ -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

View File

@@ -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