execjs 1.2.7 → 1.2.8
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/execjs/external_runtime.rb +17 -5
- data/lib/execjs/version.rb +1 -1
- metadata +5 -5
@@ -21,8 +21,9 @@ module ExecJS
|
|
21
21
|
|
22
22
|
def exec(source, options = {})
|
23
23
|
source = source.encode('UTF-8') if source.respond_to?(:encode)
|
24
|
+
source = "#{@source}\n#{source}" if @source
|
24
25
|
|
25
|
-
compile_to_tempfile(
|
26
|
+
compile_to_tempfile(source) do |file|
|
26
27
|
extract_result(@runtime.send(:exec_runtime, file.path))
|
27
28
|
end
|
28
29
|
end
|
@@ -121,7 +122,7 @@ module ExecJS
|
|
121
122
|
end
|
122
123
|
|
123
124
|
def exec_runtime(filename)
|
124
|
-
output = sh("#{
|
125
|
+
output = sh("#{shell_escape(*(@binary.split(' ') << filename))} 2>&1")
|
125
126
|
if $?.success?
|
126
127
|
output
|
127
128
|
else
|
@@ -132,7 +133,7 @@ module ExecJS
|
|
132
133
|
def locate_binary
|
133
134
|
if binary = which(@command)
|
134
135
|
if @test_args
|
135
|
-
output = `#{
|
136
|
+
output = `#{shell_escape(binary, @test_args)} 2>&1`
|
136
137
|
binary if output.match(@test_match)
|
137
138
|
else
|
138
139
|
binary
|
@@ -144,9 +145,9 @@ module ExecJS
|
|
144
145
|
Array(command).each do |name|
|
145
146
|
name, args = name.split(/\s+/, 2)
|
146
147
|
result = if ExecJS.windows?
|
147
|
-
`#{
|
148
|
+
`#{shell_escape("#{ExecJS.root}/support/which.bat", name)}`
|
148
149
|
else
|
149
|
-
`#{
|
150
|
+
`#{shell_escape('command', '-v', name)} 2>/dev/null`
|
150
151
|
end
|
151
152
|
|
152
153
|
if path = result.strip.split("\n").first
|
@@ -178,5 +179,16 @@ module ExecJS
|
|
178
179
|
end
|
179
180
|
end
|
180
181
|
end
|
182
|
+
|
183
|
+
if ExecJS.windows?
|
184
|
+
def shell_escape(*args)
|
185
|
+
# see http://technet.microsoft.com/en-us/library/cc723564.aspx#XSLTsection123121120120
|
186
|
+
args.map { |arg| arg.gsub(/([&|()<>^ "])/,'^\1') }.join(" ")
|
187
|
+
end
|
188
|
+
else
|
189
|
+
def shell_escape(*args)
|
190
|
+
Shellwords.join(args)
|
191
|
+
end
|
192
|
+
end
|
181
193
|
end
|
182
194
|
end
|
data/lib/execjs/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: execjs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 8
|
10
|
+
version: 1.2.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sam Stephenson
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-09-
|
19
|
+
date: 2011-09-20 00:00:00 -05:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -162,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
162
|
requirements: []
|
163
163
|
|
164
164
|
rubyforge_project:
|
165
|
-
rubygems_version: 1.
|
165
|
+
rubygems_version: 1.5.2
|
166
166
|
signing_key:
|
167
167
|
specification_version: 3
|
168
168
|
summary: Run JavaScript code from Ruby
|