Deprecate find_by_shebang

This class doesn’t need to know about shebangs.
This commit is contained in:
Brandon Keepers
2014-11-27 13:18:51 -05:00
parent ffe2ccf1f6
commit 9020d7c044
2 changed files with 16 additions and 38 deletions

View File

@@ -199,18 +199,9 @@ module Linguist
@extension_index[extname] @extension_index[extname]
end end
# Public: Look up Languages by shebang line. # DEPRECATED
#
# data - Array of tokens or String data to analyze.
#
# Examples
#
# Language.find_by_shebang("#!/bin/bash\ndate;")
# # => [#<Language name="Bash">]
#
# Returns the matching Language
def self.find_by_shebang(data) def self.find_by_shebang(data)
@interpreter_index[Linguist.interpreter_from_shebang(data)] @interpreter_index[Shebang.interpreter(data)]
end end
# Public: Look up Languages by interpreter. # Public: Look up Languages by interpreter.

View File

@@ -223,34 +223,21 @@ class TestLanguage < Test::Unit::TestCase
assert_equal [Language['Chapel']], Language.find_by_filename('examples/hello.chpl') assert_equal [Language['Chapel']], Language.find_by_filename('examples/hello.chpl')
end end
def test_find_by_shebang def test_find_by_interpreter
assert_equal 'ruby', Linguist.interpreter_from_shebang("#!/usr/bin/ruby\n# baz") {
{ [] => ["", "ruby" => "Ruby",
"foo", "Rscript" => "R",
"#bar", "sh" => "Shell",
"#baz", "bash" => "Shell",
"///", "python" => "Python",
"\n\n\n\n\n", "python2" => "Python",
" #!/usr/sbin/ruby", "python3" => "Python",
"\n#!/usr/sbin/ruby"], "sbcl" => "Common Lisp"
['Ruby'] => ["#!/usr/bin/env ruby\n# baz", }.each do |interpreter, language|
"#!/usr/sbin/ruby\n# bar", assert_equal [Language[language]], Language.find_by_interpreter(interpreter)
"#!/usr/bin/ruby\n# foo",
"#!/usr/sbin/ruby",
"#!/usr/sbin/ruby foo bar baz\n"],
['R'] => ["#!/usr/bin/env Rscript\n# example R script\n#\n"],
['Shell'] => ["#!/usr/bin/bash\n", "#!/bin/sh"],
['Python'] => ["#!/bin/python\n# foo\n# bar\n# baz",
"#!/usr/bin/python2.7\n\n\n\n",
"#!/usr/bin/python3\n\n\n\n"],
["Common Lisp"] => ["#!/usr/bin/sbcl --script\n\n"]
}.each do |languages, bodies|
bodies.each do |body|
assert_equal([body, languages.map{|l| Language[l]}],
[body, Language.find_by_shebang(body)])
end
end end
assert_equal [], Language.find_by_interpreter(nil)
end end
def test_find def test_find