Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
nan: add support for JSON::Parse & Stringify (#651)
* nan: add support for JSON::Parse & Stringify Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: entry points need a Nan::HandleScope Add a Nan::HandleScope to each static entry point. The private singleton class constructor does not need a Nan::HandleScope, because it can only be called from one of the static entry points. Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: ditch the singleton and remove all persistence Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: we *always* need a HandleScope Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: use Nan::To<v8::String> rather than ->ToString() Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: use Nan::Get rather than v8::Object::Get Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: use Nan::To<v8::Object> rather than ->ToObject() Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: proper HandleScope placement for Parse() Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * doc/json.md: Nan::To<v8::Object> returns a MaybeLocal<v8::Object> Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: dont call ToLocalChecked on an empty MaybeLocal Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: replace v8::MaybeLocal with Nan::MaybeLocal Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: check MaybeLocal returned by Nan::To<v8::Object> Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * remove rvagg from notifications * nan_json.h: replace v8::MaybeLocal with Nan::MaybeLocal Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * convert Nan::JSON to an RAII class Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: all entry points need a Nan::EscapableHandleScope Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: v8::JSON::Parse() that takes no context returns v8::Local<v8::Value> Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: check !Nan::Callback.IsEmpty() before calling it Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * Revert "remove rvagg from notifications" This reverts commit 00a98ec. * nan_json.h: rename for consistency: jsonObject->json_object, jsonString->json_string Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/json-parse.cpp: fix memory leak Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: rename m_cb_parse->parse_cb_ & m_cb_stringify->stringify_cb_ Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: remove unnecessary destructor Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: identify the #endif's Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: rename parseMethod->parse_method & stringifyMethod->stringify_method Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: use Local<Value>.As<Function> rather than Local<Function>::Cast Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: convert camelCase locals to snake_case Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: remove parens from precompiler directives Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: check NODE_MODULE_VERSION rather than NODE_MAJOR_VERSION & NODE_MINOR_VERSION Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * doc/json.md: check MaybeLocal before extraction Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * doc/json.md: clean up 'Use JSON.Api(arg) to ...' short description Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * doc/json.md: Nan::JSON.[Api] instead of Nan::JSON::[Api] Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/json-parse.cpp: check MaybeLocal before proceeding Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/json-stringify.cpp: improve argument checks Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/strings.cpp: check MaybeLocal before proceeding Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/json-*.cpp: return Nan::Undefined() in the MaybeLocal.IsEmpty() case Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/js/json-parse-test.js: add more test cases Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/js/json-stringify-test.js: add more test cases Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/js/json-parse-test.js: add spaces near square brackets in arrays Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/json-stringify.cpp: check gap argument before extraction Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/json-stringify.cpp: replace v8::MaybeLocal with Nan::MaybeLocal Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: JSON constructor needs a Nan::HandleScope Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/json-*.cpp: prefer the fast primitive setters where available replace ReturnValue::Set(Nan::Undefined()) with ReturnValue::SetUndefined() Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: add assertions to constructor sanity checks Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: convert remaining sanity checks to assertions Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * test/cpp/json-*.cpp: no need to set return value to Undefined as it is the default Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com> * nan_json.h: remove superfluous newlines after assert Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com>
- Loading branch information