From 26e895bb8d2d3943dacc4138c8af53b94eba6dd1 Mon Sep 17 00:00:00 2001 From: Charles Lowell Date: Tue, 8 May 2012 16:17:25 -0500 Subject: [PATCH] expose objects in the lamest way possible. --- ext/v8/convert.cc | 4 ++-- ext/v8/object.cc | 9 ++++++++- ext/v8/rr.h | 5 +++-- ext/v8/string.cc | 6 +++--- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ext/v8/convert.cc b/ext/v8/convert.cc index 583d5bb..8c8613d 100644 --- a/ext/v8/convert.cc +++ b/ext/v8/convert.cc @@ -28,7 +28,7 @@ VALUE Convert(v8::Handle value) { return rb_float_new(value->NumberValue()); } if (value->IsString()) { - return String::Convert(value->ToString()); + return String::convert(value->ToString()); } if (value->IsFunction()) { // return Function(value); @@ -40,7 +40,7 @@ VALUE Convert(v8::Handle value) { // return rr_reflect_v8_date(value); } if (value->IsObject()) { - // return Object(value); + return Object::convert(value->ToObject()); } return Qnil; } diff --git a/ext/v8/object.cc b/ext/v8/object.cc index f97479e..f087038 100644 --- a/ext/v8/object.cc +++ b/ext/v8/object.cc @@ -2,6 +2,8 @@ namespace rr { +VALUE Object::Class; + void Object::Init() { ClassBuilder("Object", "Value"). defineSingletonMethod("New", &New). @@ -12,7 +14,8 @@ void Object::Init() { defineMethod("Has", &Has). defineMethod("Delete", &Delete). defineMethod("ForceDelete", &ForceDelete). - defineMethod("SetAccessor", &SetAccessor); + defineMethod("SetAccessor", &SetAccessor). + store(&Class); ClassBuilder("PropertyAttribute"). defineEnumConst("None", v8::None). defineEnumConst("ReadOnly", v8::ReadOnly). @@ -25,6 +28,10 @@ void Object::Init() { defineEnumConst("PROHIBITS_OVERWRITING", v8::PROHIBITS_OVERWRITING); } +VALUE Object::convert(v8::Handle object) { + return Object::create(object, Class); +} + VALUE Object::New(VALUE self) { return Object::create(v8::Object::New(), self); } diff --git a/ext/v8/rr.h b/ext/v8/rr.h index 124569b..63fcfdc 100644 --- a/ext/v8/rr.h +++ b/ext/v8/rr.h @@ -179,8 +179,7 @@ public: static VALUE New(VALUE self, VALUE value); static VALUE Utf8Value(VALUE self); - static VALUE Convert(v8::Handle value); - + static VALUE convert(v8::Handle value); inline String(VALUE value) : Ref(value) {} private: static VALUE Class; @@ -202,6 +201,8 @@ public: static VALUE ForceDelete(VALUE self, VALUE key); static VALUE SetAccessor(int argc, VALUE* argv, VALUE self); + static VALUE Class; + static VALUE convert(v8::Handle value); inline Object(VALUE value) : Ref(value) {} }; diff --git a/ext/v8/string.cc b/ext/v8/string.cc index e237a5b..84173e1 100644 --- a/ext/v8/string.cc +++ b/ext/v8/string.cc @@ -12,7 +12,7 @@ void String::Init() { } VALUE String::New(VALUE StringClass, VALUE string) { - return String::Convert(v8::String::New(RSTRING_PTR(string), (int)RSTRING_LEN(string))); + return String::convert(v8::String::New(RSTRING_PTR(string), (int)RSTRING_LEN(string))); } VALUE String::Utf8Value(VALUE self) { @@ -20,8 +20,8 @@ VALUE String::Utf8Value(VALUE self) { return rb_str_new(*v8::String::Utf8Value(str.GetHandle()), str->Utf8Length()); } -VALUE String::Convert(v8::Handle string) { - return String::create(string, String::Class); +VALUE String::convert(v8::Handle string) { + return String::create(string, Class); } } //namespace rr \ No newline at end of file