mirror of
https://github.com/pysunday/sdenv.git
synced 2025-04-12 03:37:16 +08:00
52 lines
1.8 KiB
C++
52 lines
1.8 KiB
C++
#include <node.h>
|
|
namespace documentAll {
|
|
|
|
using v8::Context;
|
|
using v8::Function;
|
|
using v8::FunctionCallbackInfo;
|
|
using v8::FunctionTemplate;
|
|
using v8::Isolate;
|
|
using v8::Local;
|
|
using v8::Number;
|
|
using v8::Object;
|
|
using v8::ObjectTemplate;
|
|
using v8::String;
|
|
using v8::Value;
|
|
using v8::Null;
|
|
using v8::Array;
|
|
|
|
void MyFunctionCallback(const FunctionCallbackInfo<Value>& args) {
|
|
Isolate* isolate = args.GetIsolate();
|
|
args.GetReturnValue().Set(Null(isolate));
|
|
}
|
|
|
|
void GetDocumentAll(const FunctionCallbackInfo<Value>& args) {
|
|
Isolate* isolate = args.GetIsolate();
|
|
Local<Context> context = isolate->GetCurrentContext();
|
|
Local<ObjectTemplate> obj_template = ObjectTemplate::New(isolate);
|
|
obj_template->MarkAsUndetectable();
|
|
obj_template->SetCallAsFunctionHandler(MyFunctionCallback);
|
|
Local<Object> obj = obj_template->NewInstance(context).ToLocalChecked();
|
|
if (args.Length() > 0 && args[0]->IsObject()) {
|
|
Local<Object> argObj = args[0]->ToObject(context).ToLocalChecked();
|
|
Local<Array> propertyNames = argObj->GetPropertyNames(context).ToLocalChecked();
|
|
for (uint32_t i = 0; i < propertyNames->Length(); ++i) {
|
|
Local<Value> key = propertyNames->Get(context, i).ToLocalChecked();
|
|
Local<Value> value = argObj->Get(context, key).ToLocalChecked();
|
|
(void)obj->Set(context, key, value);
|
|
}
|
|
}
|
|
args.GetReturnValue().Set(obj);
|
|
}
|
|
|
|
void Init(Local<Object> exports, Local<Object> module) {
|
|
Isolate* isolate = exports->GetIsolate();
|
|
Local<Context> context = isolate->GetCurrentContext();
|
|
Local<FunctionTemplate> method_template = FunctionTemplate::New(isolate, GetDocumentAll);
|
|
exports->Set(context, String::NewFromUtf8(isolate, "getDocumentAll").ToLocalChecked(), method_template->GetFunction(context).ToLocalChecked()).FromJust();
|
|
}
|
|
|
|
NODE_MODULE(NODE_GYP_MODULE_NAME, Init)
|
|
}
|
|
|