1
0
Fork 0
mirror of https://github.com/rubyjs/therubyrhino synced 2023-03-27 23:21:34 -04:00
therubyrhino/lib/rhino/wormhole.rb

49 lines
1.4 KiB
Ruby
Raw Normal View History

module Rhino
2011-10-05 17:49:51 -04:00
module To
JS_UNDEF = [J::Scriptable::NOT_FOUND, J::Undefined]
2011-10-05 17:49:51 -04:00
def ruby(object)
case object
2010-08-11 10:56:41 -04:00
when *JS_UNDEF then nil
when J::Wrapper then object.unwrap
when J::NativeArray then array(object)
2011-10-05 17:49:51 -04:00
when J::NativeDate then Time.at(object.getJSTimeValue() / 1000)
2010-08-11 10:56:41 -04:00
when J::Regexp::NativeRegExp then object
when J::Function then NativeFunction.new(object)
when J::Scriptable then NativeObject.new(object)
else object
2011-10-05 17:49:51 -04:00
end
end
2011-10-05 17:49:51 -04:00
def javascript(object)
case object
when String,Numeric then object
when TrueClass,FalseClass then object
when Array then J::NativeArray.new(object.to_java)
when Hash then ruby_hash_to_native(object)
when Proc,Method then RubyFunction.new(object)
2011-10-05 17:49:51 -04:00
when NativeObject then object.j
when J::Scriptable then object
else RubyObject.new(object)
end
end
2011-10-05 17:49:51 -04:00
def array(native)
native.length.times.map {|i| ruby(native.get(i,native))}
end
def ruby_hash_to_native(ruby_object)
native_object = NativeObject.new
ruby_object.each_pair do |k, v|
native_object[k] = v
end
native_object.j
end
2011-10-05 17:49:51 -04:00
module_function :ruby, :javascript, :array, :ruby_hash_to_native
end
end