Sha256: b3ebe7bd1b67549205f4291030eab0752370c09dc3cfb7c28be4dc977124200a
Contents?: true
Size: 1.5 KB
Versions: 3
Compression:
Stored size: 1.5 KB
Contents
require 'set' module V8 class NamedPropertyGetter def self.call(property, info) name = To.rb(property) obj = To.rb(info.This()) perl_name = To.perl_case(name) methods = obj.public_methods(false).map {|m| m.to_s} method_name = if methods.include?(name) name elsif methods.include?(perl_name) perl_name end if method_name method = obj.method(method_name) if method.arity == 0 Function.rubycall(method) else To.v8(method) end else C::Empty end end end class NamedPropertySetter def self.call(property, value, info) obj = To.rb(info.This()) setter = To.rb(property) + "=" camel_name = To.camel_case(setter) perl_name = To.perl_case(setter) methods = obj.public_methods(false).map {|m| m.to_s} if methods.include?(perl_name) obj.send(perl_name, To.rb(value)) elsif methods.include?(camel_name) obj.send(camel_name, To.rb(value)) else C::Empty end end end class NamedPropertyEnumerator def self.call(info) obj = To.rb(info.This()) camel_methods = obj.public_methods(false).inject(Set.new) do |set, name| set.tap do set << To.camel_case(name) end end names = V8::C::Array::New(camel_methods.length) camel_methods.each_with_index do |name, i| names.Set(i, C::String::New(name)) end return names end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
therubyracer-0.7.1 | lib/v8/access.rb |
therubyracer-0.7.1.pre | lib/v8/access.rb |
therubyracer-0.7.0 | lib/v8/access.rb |