Skip to content

Commit b5be6e1

Browse files
add JS::Object#to_s method
1 parent d92d1a8 commit b5be6e1

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

ext/js/js-core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ void Init_js() {
411411
rb_define_method(rb_cJS_Object, "__export_to_js", _rb_js_export_to_js, 0);
412412
rb_define_singleton_method(rb_cJS_Object, "__import_from_js", _rb_js_import_from_js, 0);
413413
rb_define_method(rb_cJS_Object, "inspect", _rb_js_obj_inspect, 0);
414+
rb_define_method(rb_cJS_Object, "to_s", _rb_js_obj_inspect, 0);
414415
rb_define_singleton_method(rb_cJS_Object, "wrap", _rb_js_obj_wrap, 1);
415416

416417
rb_define_method(rb_cInteger, "to_js", _rb_js_integer_to_js, 0);

packages/npm-packages/ruby-wasm-wasi/test/js_from_rb.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ describe("Manipulation of JS from Ruby", () => {
6464
expect(vm.eval(result).toString()).toBe(String(props.result));
6565
});
6666

67+
test.each([
68+
`24`, `"hello"`, `null`, `undefined`,
69+
])("JS::Object#to_s (%s)", async (value) => {
70+
const vm = await initRubyVM();
71+
const to_s_result = `require "js"; JS.eval('return ${value}').to_s`;
72+
const inspect_result = `require "js"; JS.eval('return ${value}').inspect`;
73+
expect(vm.eval(to_s_result).toString()).toBe(String(eval(value)));
74+
expect(vm.eval(inspect_result).toString()).toBe(String(eval(value)));
75+
});
76+
6777
test.each([
6878
{ expr: "JS.global[:Object]", result: Object },
6979
{ expr: "JS.global[:Object][:keys]", result: Object.keys },

0 commit comments

Comments
 (0)