mirror of
https://github.com/rubyjs/therubyracer
synced 2023-03-27 23:21:42 -04:00
Enumerate ruby properties in javascript.
This commit is contained in:
parent
ec985a9fc5
commit
1dd55ffa77
4 changed files with 12 additions and 4 deletions
|
@ -148,5 +148,13 @@ Handle<Boolean> RacerRubyNamedPropertyDeleter(Local<String> property, const Acce
|
||||||
* property getter intercepts.
|
* property getter intercepts.
|
||||||
*/
|
*/
|
||||||
Handle<Array> RacerRubyNamedPropertyEnumerator(const AccessorInfo& info) {
|
Handle<Array> RacerRubyNamedPropertyEnumerator(const AccessorInfo& info) {
|
||||||
return Local<Array>();
|
VALUE object = unwrap(info);
|
||||||
|
VALUE methods = rb_funcall(object, rb_intern("public_methods"), 1, Qfalse);
|
||||||
|
int length = RARRAY_LEN(methods);
|
||||||
|
Local<Array> properties = Array::New(length);
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
VALUE camel_name = rb_funcall(V8_To, rb_intern("camel_case"), 1, rb_ary_entry(methods, i));
|
||||||
|
properties->Set(Integer::New(i), RB2V8(camel_name));
|
||||||
|
}
|
||||||
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ Local<ObjectTemplate> Racer_Create_V8_ObjectTemplate(VALUE value) {
|
||||||
RacerRubyNamedPropertySetter,
|
RacerRubyNamedPropertySetter,
|
||||||
0, // RacerRubyNamedPropertyQuery,
|
0, // RacerRubyNamedPropertyQuery,
|
||||||
0, // RacerRubyNamedPropertyDeleter,
|
0, // RacerRubyNamedPropertyDeleter,
|
||||||
0, // RacerRubyNamedPropertyEnumerator,
|
RacerRubyNamedPropertyEnumerator,
|
||||||
External::Wrap((void *)value)
|
External::Wrap((void *)value)
|
||||||
);
|
);
|
||||||
return tmpl;
|
return tmpl;
|
||||||
|
|
|
@ -21,7 +21,7 @@ module V8
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def camelcase(str)
|
def camel_case(str)
|
||||||
str.to_s.gsub(/_(\w)/) {$1.upcase}
|
str.to_s.gsub(/_(\w)/) {$1.upcase}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 26e3054452beb85bdb5ab6f42f1d9531f654a7d8
|
Subproject commit 9e8d547fc7b217f9cab0192c04753499f47fdb38
|
Loading…
Reference in a new issue