1
0
Fork 0
mirror of https://github.com/rubyjs/therubyracer synced 2023-03-27 23:21:42 -04:00
therubyracer/ext/v8/script.cc

49 lines
1.3 KiB
C++
Raw Normal View History

2015-04-04 18:23:23 +00:00
#include "rr.h"
namespace rr {
void Script::Init() {
ClassBuilder("Script").
defineSingletonMethod("Compile", &Compile).
defineMethod("Run", &Run).
// TODO
// defineMethod("RunWithTimeout", &RunWithTimeout).
store(&Class);
// TODO
// ClassBuilder("ScriptOrigin").
// defineSingletonMethod("new", &ScriptOrigin::initialize).
// store(&ScriptOrigin::Class);
// TODO
// ClassBuilder("ScriptData").
// defineSingletonMethod("PreCompile", &ScriptData::PreCompile).
// defineSingletonMethod("New", &ScriptData::New).
// defineMethod("Length", &ScriptData::Length).
// defineMethod("Data", &ScriptData::Data).
// defineMethod("HasError", &ScriptData::HasError).
// store(&ScriptData::Class);
}
VALUE Script::Compile(int argc, VALUE argv[], VALUE self) {
VALUE source, rb_context, origin;
rb_scan_args(argc, argv, "21", &source, &rb_context, &origin);
Context context(rb_context);
Locker lock(context.getIsolate());
// TODO: ScriptOrigin
return Script(context.getIsolate(), v8::Script::Compile(String(source)));
}
VALUE Script::Run(VALUE self, VALUE rb_context) {
Context context(rb_context);
Locker lock(context->GetIsolate());
return Value::handleToRubyObject(context->GetIsolate(), Script(self)->Run());
}
}