From ffe2ccf1f614d2114c11e3f9e5b4271cc3749996 Mon Sep 17 00:00:00 2001 From: Brandon Keepers Date: Thu, 27 Nov 2014 13:17:28 -0500 Subject: [PATCH] Don't bother creating an instance --- lib/linguist/samples.rb | 2 +- lib/linguist/shebang.rb | 13 +++++-------- test/test_shebang.rb | 10 +++++----- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/lib/linguist/samples.rb b/lib/linguist/samples.rb index 1cacdf09..fa3655ce 100644 --- a/lib/linguist/samples.rb +++ b/lib/linguist/samples.rb @@ -117,7 +117,7 @@ module Linguist # Used to retrieve the interpreter from the shebang line of a file's data. def self.interpreter_from_shebang(data) - Shebang.new(data).interpreter + Shebang.interpreter(data) end end diff --git a/lib/linguist/shebang.rb b/lib/linguist/shebang.rb index b0152326..6181d98f 100644 --- a/lib/linguist/shebang.rb +++ b/lib/linguist/shebang.rb @@ -2,15 +2,12 @@ module Linguist # Check if there's a shebang line and use that as authoritative class Shebang def self.call(blob, _) - Language.find_by_interpreter(new(blob.data).interpreter) + Language.find_by_interpreter interpreter(blob.data) end - def initialize(data) - @lines = data.lines - end - - def interpreter - return unless match = /^#! ?(.*)$/.match(@lines.first) + def self.interpreter(data) + lines = data.lines + return unless match = /^#! ?(.*)$/.match(lines.first) tokens = match[0].split(' ') script = tokens.first.split('/').last @@ -25,7 +22,7 @@ module Linguist # Check for multiline shebang hacks that call `exec` if script == 'sh' && - @lines[0...5].any? { |l| l.match(/exec (\w+).+\$0.+\$@/) } + lines[0...5].any? { |l| l.match(/exec (\w+).+\$0.+\$@/) } script = $1 end diff --git a/test/test_shebang.rb b/test/test_shebang.rb index 290dc14f..aa3218f3 100644 --- a/test/test_shebang.rb +++ b/test/test_shebang.rb @@ -4,7 +4,7 @@ class TestShebang < Test::Unit::TestCase include Linguist def assert_interpreter(interpreter, body) - assert_equal interpreter, Shebang.new(body).interpreter + assert_equal interpreter, Shebang.interpreter(body) end def test_shebangs @@ -17,14 +17,14 @@ class TestShebang < Test::Unit::TestCase assert_interpreter nil, " #!/usr/sbin/ruby" assert_interpreter nil, "\n#!/usr/sbin/ruby" - assert_interpreter "ruby", "#!/usr/sbin/ruby\n# bar", - assert_interpreter "ruby", "#!/usr/bin/ruby\n# foo", - assert_interpreter "ruby", "#!/usr/sbin/ruby", + assert_interpreter "ruby", "#!/usr/sbin/ruby\n# bar" + assert_interpreter "ruby", "#!/usr/bin/ruby\n# foo" + assert_interpreter "ruby", "#!/usr/sbin/ruby" assert_interpreter "ruby", "#!/usr/sbin/ruby foo bar baz\n" assert_interpreter "Rscript", "#!/usr/bin/env Rscript\n# example R script\n#\n" assert_interpreter "crystal", "#!/usr/bin/env bin/crystal" - assert_interpreter "ruby", "#!/usr/bin/env ruby\n# baz", + assert_interpreter "ruby", "#!/usr/bin/env ruby\n# baz" assert_interpreter "bash", "#!/usr/bin/bash\n" assert_interpreter "sh", "#!/bin/sh"