mirror of
https://github.com/rubyjs/therubyracer
synced 2023-03-27 23:21:42 -04:00
49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
|
#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());
|
||
|
}
|
||
|
|
||
|
}
|