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