Esempio n. 1
0
	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();
	};
Esempio n. 2
0
	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());
	};