diff options
author | Jarrod Connolly <jarrod@nestedquotes.ca> | 2019-02-03 23:26:33 -0800 |
---|---|---|
committer | Michael Dawson <michael_dawson@ca.ibm.com> | 2019-02-28 17:43:37 -0500 |
commit | 13b1aafe8710f5df733fd42bed8b1e1321160505 (patch) | |
tree | bf7018fdf0eb8e6509f22faf0b163089f669ba7e /src/js_native_api_v8.cc | |
parent | 3f31c884ff112dd7c2a184d87e6ebbc75906ea7c (diff) | |
download | android-node-v8-13b1aafe8710f5df733fd42bed8b1e1321160505.tar.gz android-node-v8-13b1aafe8710f5df733fd42bed8b1e1321160505.tar.bz2 android-node-v8-13b1aafe8710f5df733fd42bed8b1e1321160505.zip |
n-api: implement date object
Implements `napi_create_date()` as well as `napi_is_date()` to
allow working with JavaScript Date objects.
PR-URL: https://github.com/nodejs/node/pull/25917
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/js_native_api_v8.cc')
-rw-r--r-- | src/js_native_api_v8.cc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index fd3ed2af6a..022ce104eb 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -2887,6 +2887,48 @@ napi_status napi_is_promise(napi_env env, return napi_clear_last_error(env); } +napi_status napi_create_date(napi_env env, + double time, + napi_value* result) { + NAPI_PREAMBLE(env); + CHECK_ARG(env, result); + + v8::MaybeLocal<v8::Value> maybe_date = v8::Date::New(env->context(), time); + CHECK_MAYBE_EMPTY(env, maybe_date, napi_generic_failure); + + *result = v8impl::JsValueFromV8LocalValue(maybe_date.ToLocalChecked()); + + return GET_RETURN_STATUS(env); +} + +napi_status napi_is_date(napi_env env, + napi_value value, + bool* is_date) { + CHECK_ENV(env); + CHECK_ARG(env, value); + CHECK_ARG(env, is_date); + + *is_date = v8impl::V8LocalValueFromJsValue(value)->IsDate(); + + return napi_clear_last_error(env); +} + +napi_status napi_get_date_value(napi_env env, + napi_value value, + double* result) { + NAPI_PREAMBLE(env); + CHECK_ARG(env, value); + CHECK_ARG(env, result); + + v8::Local<v8::Value> val = v8impl::V8LocalValueFromJsValue(value); + RETURN_STATUS_IF_FALSE(env, val->IsDate(), napi_date_expected); + + v8::Local<v8::Date> date = val.As<v8::Date>(); + *result = date->ValueOf(); + + return GET_RETURN_STATUS(env); +} + napi_status napi_run_script(napi_env env, napi_value script, napi_value* result) { |