therubyrhino 2.0.5 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.travis.yml +7 -9
- data/Gemfile +1 -2
- data/lib/rhino/context.rb +0 -3
- data/lib/rhino/rhino_ext.rb +34 -17
- data/lib/rhino/version.rb +1 -1
- data/spec/rhino/error_spec.rb +4 -6
- data/spec/rhino/rhino_ext_spec.rb +19 -40
- data/spec/spec_helper.rb +5 -0
- data/therubyrhino.gemspec +3 -1
- metadata +12 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 23aafaf63c5af04a6c05a35bf9fa2b390be1f802f2871be65460ae2deae16f8e
|
4
|
+
data.tar.gz: 121d8fe9f0b66fb725adb95e528e78ab08abde6e849ea839e607a85af004aa68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2ed193aa1265042172ba68b3ddea823949d7ff2ea8dc3fdbffb353d7d99640e33ee8ad12e7e5cdff4bd7abbccce0ae50d0f293c7b9c1f2c15b5c9175d23377d
|
7
|
+
data.tar.gz: 3f2fc23e13149d53e1aa008b2161d1580ac75357ce94316ae734056614f9b9c653113558c65154138fc1d816a9a3791d5436dd4a0cfa657067c3ac63bef947e3
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/lib/rhino/context.rb
CHANGED
@@ -277,9 +277,6 @@ module Rhino
|
|
277
277
|
# at org.mozilla.javascript.optimizer.Codegen.reportClassFileFormatException
|
278
278
|
|
279
279
|
def code_generation_error?(exception) # :nodoc
|
280
|
-
if ( exception.is_a?(NativeException) rescue nil ) # JRuby 1.6 wrapping
|
281
|
-
exception = exception.cause
|
282
|
-
end
|
283
280
|
if exception.class == Rhino::JS::EvaluatorException
|
284
281
|
if exception.message.index(CODE_GENERATION_ERROR_MESSAGE)
|
285
282
|
return true
|
data/lib/rhino/rhino_ext.rb
CHANGED
@@ -173,30 +173,47 @@ class Java::OrgMozillaJavascript::NativeObject
|
|
173
173
|
|
174
174
|
end
|
175
175
|
|
176
|
+
module Rhino
|
177
|
+
module Ruby
|
178
|
+
# @private
|
179
|
+
module FunctionCall
|
180
|
+
# make JavaScript functions callable Ruby style e.g. `fn.call('42')`
|
181
|
+
#
|
182
|
+
# NOTE: That invoking #call does not have the same semantics as
|
183
|
+
# JavaScript's Function#call but rather as Ruby's Method#call !
|
184
|
+
# Use #apply or #bind before calling to achieve the same effect.
|
185
|
+
def call(*args)
|
186
|
+
context = Rhino::JS::Context.enter; scope = current_scope(context)
|
187
|
+
# calling as a (var) stored function - no this === undefined "use strict"
|
188
|
+
# TODO can't pass Undefined.instance as this - it's not a Scriptable !?
|
189
|
+
this = Rhino::JS::ScriptRuntime.getGlobal(context)
|
190
|
+
js_args = Rhino.args_to_javascript(args, scope)
|
191
|
+
Rhino.to_ruby __call__(context, scope, this, js_args)
|
192
|
+
rescue Rhino::JS::JavaScriptException => e
|
193
|
+
raise Rhino::JSError.new(e)
|
194
|
+
ensure
|
195
|
+
Rhino::JS::Context.exit
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
176
201
|
# The base class for all JavaScript function objects.
|
177
202
|
class Java::OrgMozillaJavascript::BaseFunction
|
178
203
|
|
179
204
|
# Object call(Context context, Scriptable scope, Scriptable this, Object[] args)
|
180
205
|
alias_method :__call__, :call
|
181
206
|
|
182
|
-
#
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
# TODO can't pass Undefined.instance as this - it's not a Scriptable !?
|
191
|
-
this = Rhino::JS::ScriptRuntime.getGlobal(context)
|
192
|
-
js_args = Rhino.args_to_javascript(args, scope)
|
193
|
-
Rhino.to_ruby __call__(context, scope, this, js_args)
|
194
|
-
rescue Rhino::JS::JavaScriptException => e
|
195
|
-
raise Rhino::JSError.new(e)
|
196
|
-
ensure
|
197
|
-
Rhino::JS::Context.exit
|
207
|
+
# @deprecated (but needed to support JRuby <= 9.2)
|
208
|
+
module_exec { define_method :call, Rhino::Ruby::FunctionCall.instance_method(:call) }
|
209
|
+
|
210
|
+
def self.inherited(klass)
|
211
|
+
# NOTE: in JRuby < 9.3 inherited won't be called for a Java class
|
212
|
+
# ... so this happens pretty much only for `Rhino::Ruby::Function`
|
213
|
+
klass.send(:include, Rhino::Ruby::FunctionCall)
|
214
|
+
super(klass)
|
198
215
|
end
|
199
|
-
|
216
|
+
|
200
217
|
# bind a JavaScript function into the given (this) context
|
201
218
|
def bind(this, *args)
|
202
219
|
context = Rhino::JS::Context.enter; scope = current_scope(context)
|
data/lib/rhino/version.rb
CHANGED
data/spec/rhino/error_spec.rb
CHANGED
@@ -85,7 +85,7 @@ describe Rhino::JSError do
|
|
85
85
|
e.javascript_backtrace(true).should be_a Enumerable
|
86
86
|
e.javascript_backtrace(true).size.should >= 1
|
87
87
|
element = e.javascript_backtrace(true)[0]
|
88
|
-
element.file_name.should
|
88
|
+
element.file_name.should match '<eval>'
|
89
89
|
element.function_name.should be nil
|
90
90
|
element.line_number.should == 1
|
91
91
|
else
|
@@ -99,7 +99,7 @@ describe Rhino::JSError do
|
|
99
99
|
rescue => e
|
100
100
|
e.javascript_backtrace.size.should >= 2
|
101
101
|
e.javascript_backtrace[0].should =~ /at .*?<eval>:1 \(fortyTwo\)/
|
102
|
-
expect( e.javascript_backtrace.find { |trace| trace
|
102
|
+
expect( e.javascript_backtrace.find { |trace| trace.end_with? "<eval>:2" } ).to_not be nil
|
103
103
|
else
|
104
104
|
fail "expected to rescue"
|
105
105
|
end
|
@@ -174,15 +174,13 @@ describe Rhino::JSError do
|
|
174
174
|
hi = context.eval "( function hi(arg) { Hello.hello(arg); } )"
|
175
175
|
begin
|
176
176
|
hi.call(24)
|
177
|
-
|
178
|
-
|
177
|
+
fail "expected to raise"
|
178
|
+
rescue Rhino::JSError => e
|
179
179
|
e.value.should_not be nil
|
180
180
|
e.value.should be_a Rhino::Ruby::Object
|
181
181
|
e.value(true).should be_a RuntimeError # unwraps ruby object
|
182
182
|
# prints the original message (beyond [ruby RuntimeError]) :
|
183
183
|
e.message.should == "RuntimeError: hello"
|
184
|
-
else
|
185
|
-
fail "expected to rescue"
|
186
184
|
end
|
187
185
|
# V8::JSError: hello
|
188
186
|
# from (irb):4:in `hello'
|
@@ -24,8 +24,9 @@ shared_examples_for 'ScriptableObject', :shared => true do
|
|
24
24
|
it "might be converted to a hash with string keys" do
|
25
25
|
@object[42] = '42'
|
26
26
|
@object[:foo] = 'bar'
|
27
|
-
|
28
|
-
|
27
|
+
prop_h = @object.to_h
|
28
|
+
expect( prop_h['42'] ).to eql '42'
|
29
|
+
expect( prop_h['foo'] ).to eql 'bar'
|
29
30
|
end
|
30
31
|
|
31
32
|
it "yields properties with each" do
|
@@ -66,13 +67,6 @@ describe "FunctionObject" do
|
|
66
67
|
|
67
68
|
to_string = java.lang.Object.new.getClass.getMethod(:toString)
|
68
69
|
@object = Rhino::JS::FunctionObject.new('to_string', to_string, scope)
|
69
|
-
@object.instance_eval do
|
70
|
-
def to_h_properties
|
71
|
-
h = { "arguments"=> nil, "name"=> "to_string", "arity"=> 0, "length"=> 0 }
|
72
|
-
RhinoHelpers.add_prototype_key(h) if Rhino.implementation_version < '1.7R4'
|
73
|
-
h
|
74
|
-
end
|
75
|
-
end
|
76
70
|
end
|
77
71
|
|
78
72
|
after do
|
@@ -80,6 +74,11 @@ describe "FunctionObject" do
|
|
80
74
|
end
|
81
75
|
|
82
76
|
it_should_behave_like 'ScriptableObject'
|
77
|
+
|
78
|
+
it 'has a length' do
|
79
|
+
prop_h = @object.to_h
|
80
|
+
expect( prop_h['length'] ).to_not be nil
|
81
|
+
end
|
83
82
|
|
84
83
|
end
|
85
84
|
|
@@ -172,13 +171,6 @@ describe "NativeFunction" do
|
|
172
171
|
|
173
172
|
object = @context.newObject(@scope)
|
174
173
|
@object = Rhino::JS::ScriptableObject.getProperty(object, 'toString')
|
175
|
-
@object.instance_eval do
|
176
|
-
def to_h_properties
|
177
|
-
h = { "arguments"=> nil, "name"=> "toString", "arity"=> 0, "length"=> 0 }
|
178
|
-
RhinoHelpers.add_prototype_key(h) if Rhino.implementation_version < '1.7R4'
|
179
|
-
h
|
180
|
-
end
|
181
|
-
end
|
182
174
|
end
|
183
175
|
|
184
176
|
after do
|
@@ -257,29 +249,6 @@ describe "NativeFunction (constructor)" do
|
|
257
249
|
factory.enterContext(@context)
|
258
250
|
|
259
251
|
@object = Rhino::JS::ScriptableObject.getProperty(@context.newObject(@scope), 'constructor')
|
260
|
-
@object.instance_eval do
|
261
|
-
def to_h_properties
|
262
|
-
h = {
|
263
|
-
"arguments"=>nil, "prototype"=>{}, "name"=>"Object", "arity"=>1, "length"=>1,
|
264
|
-
|
265
|
-
"getPrototypeOf"=> { "arguments"=>nil, "name"=>"getPrototypeOf", "arity"=>1, "length"=>1},
|
266
|
-
"keys"=>{"arguments"=>nil, "name"=>"keys", "arity"=>1, "length"=>1},
|
267
|
-
"getOwnPropertyNames"=>{"arguments"=>nil, "name"=>"getOwnPropertyNames", "arity"=>1, "length"=>1},
|
268
|
-
"getOwnPropertyDescriptor"=>{"arguments"=>nil, "name"=>"getOwnPropertyDescriptor", "arity"=>2, "length"=>2},
|
269
|
-
"defineProperty"=>{"arguments"=>nil, "name"=>"defineProperty", "arity"=>3, "length"=>3},
|
270
|
-
"isExtensible"=>{"arguments"=>nil, "name"=>"isExtensible", "arity"=>1, "length"=>1},
|
271
|
-
"preventExtensions"=>{"arguments"=>nil, "name"=>"preventExtensions", "arity"=>1, "length"=>1},
|
272
|
-
"defineProperties"=>{"arguments"=>nil, "name"=>"defineProperties", "arity"=>2, "length"=>2},
|
273
|
-
"create"=>{"arguments"=>nil, "name"=>"create", "arity"=>2, "length"=>2},
|
274
|
-
"isSealed"=>{"arguments"=>nil, "name"=>"isSealed", "arity"=>1, "length"=>1},
|
275
|
-
"isFrozen"=>{"arguments"=>nil, "name"=>"isFrozen", "arity"=>1, "length"=>1},
|
276
|
-
"seal"=>{"arguments"=>nil, "name"=>"seal", "arity"=>1, "length"=>1},
|
277
|
-
"freeze"=>{"arguments"=>nil, "name"=>"freeze", "arity"=>1, "length"=>1}
|
278
|
-
}
|
279
|
-
RhinoHelpers.add_prototype_key(h, :recurse) if Rhino.implementation_version < '1.7R4'
|
280
|
-
h
|
281
|
-
end
|
282
|
-
end
|
283
252
|
end
|
284
253
|
|
285
254
|
after do
|
@@ -287,7 +256,17 @@ describe "NativeFunction (constructor)" do
|
|
287
256
|
end
|
288
257
|
|
289
258
|
it_should_behave_like 'ScriptableObject'
|
290
|
-
|
259
|
+
|
260
|
+
it 'has a length' do
|
261
|
+
prop_h = @object.to_h
|
262
|
+
expect( prop_h['length'] ).to_not be nil
|
263
|
+
end
|
264
|
+
|
265
|
+
it 'has keys property' do
|
266
|
+
prop_h = @object.to_h
|
267
|
+
expect( prop_h['keys'] ).to be_a Hash
|
268
|
+
end
|
269
|
+
|
291
270
|
it 'is constructable' do
|
292
271
|
@object.new.should be_a Rhino::JS::NativeObject
|
293
272
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -36,4 +36,9 @@ RSpec.configure do |config|
|
|
36
36
|
config.filter_run_excluding :compat => /(0.5.0)|(0.6.0)/ # RedJS
|
37
37
|
config.include Rhino::SpecHelpers
|
38
38
|
config.deprecation_stream = 'spec/deprecations.log'
|
39
|
+
|
40
|
+
config.backtrace_clean_patterns = [
|
41
|
+
/gems\//,
|
42
|
+
/lib\/rspec\/(core|expectations|matchers|mocks)/,
|
43
|
+
]
|
39
44
|
end
|
data/therubyrhino.gemspec
CHANGED
@@ -19,7 +19,9 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files = `git ls-files`.split("\n").sort.
|
20
20
|
reject { |file| file == 'therubyrhino_jar.gemspec' || file =~ /^jar\// }
|
21
21
|
|
22
|
-
s.
|
22
|
+
s.required_ruby_version = '>= 1.9.3'
|
23
|
+
|
24
|
+
s.add_dependency "therubyrhino_jar", '>= 1.7.4', '< 1.7.8'
|
23
25
|
|
24
26
|
s.add_development_dependency "rspec", "~> 2.14.1"
|
25
27
|
s.add_development_dependency "mocha", "~> 0.13.3"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: therubyrhino
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charles Lowell
|
@@ -15,21 +15,21 @@ dependencies:
|
|
15
15
|
requirements:
|
16
16
|
- - ">="
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: 1.7.
|
18
|
+
version: 1.7.4
|
19
19
|
- - "<"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.7.
|
21
|
+
version: 1.7.8
|
22
22
|
name: therubyrhino_jar
|
23
|
-
prerelease: false
|
24
23
|
type: :runtime
|
24
|
+
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.7.
|
29
|
+
version: 1.7.4
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.7.
|
32
|
+
version: 1.7.8
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
35
35
|
requirements:
|
@@ -37,8 +37,8 @@ dependencies:
|
|
37
37
|
- !ruby/object:Gem::Version
|
38
38
|
version: 2.14.1
|
39
39
|
name: rspec
|
40
|
-
prerelease: false
|
41
40
|
type: :development
|
41
|
+
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
@@ -51,14 +51,15 @@ dependencies:
|
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 0.13.3
|
53
53
|
name: mocha
|
54
|
-
prerelease: false
|
55
54
|
type: :development
|
55
|
+
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 0.13.3
|
61
|
-
description: Call javascript code and manipulate javascript objects from ruby. Call
|
61
|
+
description: Call javascript code and manipulate javascript objects from ruby. Call
|
62
|
+
ruby code and manipulate ruby objects from javascript.
|
62
63
|
email: cowboyd@thefrontside.net
|
63
64
|
executables: []
|
64
65
|
extensions: []
|
@@ -113,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
114
|
requirements:
|
114
115
|
- - ">="
|
115
116
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
117
|
+
version: 1.9.3
|
117
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
119
|
requirements:
|
119
120
|
- - ">="
|
@@ -121,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
122
|
version: '0'
|
122
123
|
requirements: []
|
123
124
|
rubyforge_project: therubyrhino
|
124
|
-
rubygems_version: 2.
|
125
|
+
rubygems_version: 2.7.6
|
125
126
|
signing_key:
|
126
127
|
specification_version: 4
|
127
128
|
summary: Embed the Rhino JavaScript interpreter into JRuby
|