v8::Handle<v8::Value> PreludeScript::load_module_callback(const v8::Arguments& args) { if (args.Length() != 1) return v8::ThrowException(v8::Exception::Error(v8::String::New("The 'load_module' handler expects 1 argument"))); if (args[0].IsEmpty()) return v8::ThrowException(v8::Exception::Error(v8::String::New("The 'load_module' handler argument cannot be empty"))); if (!args[0]->IsString()) return v8::ThrowException(v8::Exception::Error(v8::String::New("The 'load_module' handler argument must be a string"))); v8::Handle<v8::Value> data = args.Data(); PreludeScript *prelude = reinterpret_cast<PreludeScript *>(v8::External::Unwrap(data)); //TODO: make sure correct value type passed v8::String::Value module_name(args[0].As<v8::String>()); ModuleScript *module = prelude->load_module(*module_name); if (module == NULL) return v8::ThrowException(v8::String::New("Cannot load module")); return module->get_module_object(); };
void PreludeScript::load_module_callback(const v8::FunctionCallbackInfo<v8::Value>& args) { if (args.Length() != 1) { args.GetReturnValue().Set(v8::Isolate::GetCurrent()->ThrowException( v8::Exception::Error(v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), "The 'load_module' handler expects 1 argument")))); return; } if (args[0].IsEmpty()) { args.GetReturnValue().Set(v8::Isolate::GetCurrent()->ThrowException( v8::Exception::Error(v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), "The 'load_module' handler argument cannot be empty")))); return; } if (!args[0]->IsString()) { args.GetReturnValue().Set(v8::Isolate::GetCurrent()->ThrowException( v8::Exception::Error(v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), "The 'load_module' handler argument must be a string")))); return; } v8::Handle<v8::External> data = args.Data().As<v8::External>(); PreludeScript *prelude = reinterpret_cast<PreludeScript *>(data->Value()); //TODO: make sure correct value type passed v8::String::Value module_name(args[0].As<v8::String>()); ModuleScript *module = prelude->load_module(*module_name); if (module == NULL) { args.GetReturnValue().Set(v8::Isolate::GetCurrent()->ThrowException( v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), "Cannot load module"))); return; } args.GetReturnValue().Set(module->get_module_object()); };