mirror of
https://github.com/rubyjs/therubyrhino
synced 2023-03-27 23:21:34 -04:00
add rdocs for native_object
This commit is contained in:
parent
b5fb736cfd
commit
3335adc55f
2 changed files with 38 additions and 4 deletions
|
@ -100,7 +100,7 @@ module Rhino
|
|||
|
||||
end
|
||||
|
||||
class ContextFactory < J::ContextFactory #:nodoc:
|
||||
class ContextFactory < J::ContextFactory # :nodoc:
|
||||
|
||||
def observeInstructionCount(cxt, count)
|
||||
raise RunawayScriptError, "script exceeded allowable instruction count" if count > @limit
|
||||
|
@ -112,7 +112,7 @@ module Rhino
|
|||
end
|
||||
|
||||
|
||||
class RhinoError < StandardError #:nodoc:
|
||||
class RhinoError < StandardError # :nodoc:
|
||||
def initialize(native)
|
||||
@native = native
|
||||
end
|
||||
|
@ -126,5 +126,6 @@ module Rhino
|
|||
end
|
||||
end
|
||||
|
||||
class RunawayScriptError < StandardError; end #:nodoc:
|
||||
class RunawayScriptError < StandardError # :nodoc:
|
||||
end
|
||||
end
|
|
@ -1,27 +1,59 @@
|
|||
|
||||
module Rhino
|
||||
# Wraps a javascript object and makes its properties available from ruby.
|
||||
class NativeObject
|
||||
include Enumerable
|
||||
|
||||
# The native java object wrapped by this NativeObject. This will generally
|
||||
# be an instance of org.mozilla.javascript.Scriptable
|
||||
attr_reader :j
|
||||
|
||||
def initialize(j)
|
||||
def initialize(j) # :nodoc:
|
||||
@j = j
|
||||
end
|
||||
|
||||
# get a property from this javascript object, where +k+ is a string or symbol
|
||||
# corresponding to the property name
|
||||
# e.g.
|
||||
# jsobject = Context.open do |cxt|
|
||||
# cxt.eval('({foo: 'bar', 'Take me to': 'a funky town'})')
|
||||
# end
|
||||
#
|
||||
# jsobject[:foo] # => 'bar'
|
||||
# jsobject['foo'] # => 'bar'
|
||||
# jsobject['Take me to'] # => 'a funky town'
|
||||
def [](k)
|
||||
To.ruby @j.get(k.to_s, @j)
|
||||
end
|
||||
|
||||
# set a property on the javascript object, where +k+ is a string or symbol corresponding
|
||||
# to the property name, and +v+ is the value to set. e.g.
|
||||
#
|
||||
# jsobject = eval_js "new Object()"
|
||||
# jsobject['foo'] = 'bar'
|
||||
# Context.open(:with => jsobject) do |cxt|
|
||||
# cxt.eval('foo') # => 'bar'
|
||||
# end
|
||||
|
||||
def []=(k,v)
|
||||
@j.put(k.to_s,@j,To.javascript(v))
|
||||
end
|
||||
|
||||
# enumerate the key value pairs contained in this javascript object. e.g.
|
||||
#
|
||||
# eval_js("{foo: 'bar', baz: 'bang'}").each do |key,value|
|
||||
# puts "#{key} -> #{value} "
|
||||
# end
|
||||
#
|
||||
# outputs foo -> bar baz -> bang
|
||||
def each
|
||||
for id in @j.getAllIds() do
|
||||
yield id,@j.get(id,@j)
|
||||
end
|
||||
end
|
||||
|
||||
# Converts the native object to a hash. This isn't really a stretch since it's
|
||||
# pretty much a hash in the first place.
|
||||
def to_h
|
||||
{}.tap do |h|
|
||||
each do |k,v|
|
||||
|
@ -30,6 +62,7 @@ module Rhino
|
|||
end
|
||||
end
|
||||
|
||||
# Convert this javascript object into a json string.
|
||||
def to_json(*args)
|
||||
to_h.to_json(*args)
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue