Lines Matching defs:env
37 void IntlAddon::Destructor(napi_env env, void *nativeObject, void *hint)
46 napi_value IntlAddon::SetProperty(napi_env env, napi_callback_info info)
50 NAPI_CALL(env, napi_get_undefined(env, &result));
54 napi_value IntlAddon::InitLocale(napi_env env, napi_value exports)
74 status = napi_define_class(env, "Locale", NAPI_AUTO_LENGTH, LocaleConstructor, nullptr,
81 status = napi_set_named_property(env, exports, "Locale", constructor);
91 status = napi_create_reference(env, constructor, 1, g_constructor);
99 napi_value IntlAddon::InitDateTimeFormat(napi_env env, napi_value exports)
109 status = napi_define_class(env, "DateTimeFormat", NAPI_AUTO_LENGTH, DateTimeFormatConstructor, nullptr,
116 status = napi_set_named_property(env, exports, "DateTimeFormat", constructor);
124 napi_value IntlAddon::InitRelativeTimeFormat(napi_env env, napi_value exports)
134 status = napi_define_class(env, "RelativeTimeFormat", NAPI_AUTO_LENGTH, RelativeTimeFormatConstructor, nullptr,
141 status = napi_set_named_property(env, exports, "RelativeTimeFormat", constructor);
149 napi_value IntlAddon::InitNumberFormat(napi_env env, napi_value exports)
158 status = napi_define_class(env, "NumberFormat", NAPI_AUTO_LENGTH, NumberFormatConstructor, nullptr,
165 status = napi_set_named_property(env, exports, "NumberFormat", constructor);
173 void GetOptionValue(napi_env env, napi_value options, const std::string &optionName,
178 napi_status status = napi_typeof(env, options, &type);
184 napi_status propStatus = napi_has_named_property(env, options, optionName.c_str(), &hasProperty);
186 status = napi_get_named_property(env, options, optionName.c_str(), &optionValue);
189 napi_get_value_string_utf8(env, optionValue, nullptr, 0, &len);
191 status = napi_get_value_string_utf8(env, optionValue, optionBuf.data(), len + 1, &len);
200 int64_t GetIntegerOptionValue(napi_env env, napi_value options, const std::string &optionName,
206 napi_status status = napi_typeof(env, options, &type);
212 napi_status propStatus = napi_has_named_property(env, options, optionName.c_str(), &hasProperty);
214 status = napi_get_named_property(env, options, optionName.c_str(), &optionValue);
216 status = napi_get_value_int64(env, optionValue, &integerValue);
225 void GetBoolOptionValue(napi_env env, napi_value options, const std::string &optionName,
230 napi_status status = napi_typeof(env, options, &type);
236 napi_status propStatus = napi_has_named_property(env, options, optionName.c_str(), &hasProperty);
238 status = napi_get_named_property(env, options, optionName.c_str(), &optionValue);
241 napi_get_value_bool(env, optionValue, &boolValue);
248 void GetDateOptionValues(napi_env env, napi_value options, std::map<std::string, std::string> &map)
250 GetOptionValue(env, options, "calendar", map);
251 GetOptionValue(env, options, "dateStyle", map);
252 GetOptionValue(env, options, "timeStyle", map);
253 GetOptionValue(env, options, "hourCycle", map);
254 GetOptionValue(env, options, "timeZone", map);
255 GetOptionValue(env, options, "timeZoneName", map);
256 GetOptionValue(env, options, "numberingSystem", map);
257 GetBoolOptionValue(env, options, "hour12", map);
258 GetOptionValue(env, options, "weekday", map);
259 GetOptionValue(env, options, "era", map);
260 GetOptionValue(env, options, "year", map);
261 GetOptionValue(env, options, "month", map);
262 GetOptionValue(env, options, "day", map);
263 GetOptionValue(env, options, "hour", map);
264 GetOptionValue(env, options, "minute", map);
265 GetOptionValue(env, options, "second", map);
266 GetOptionValue(env, options, "localeMatcher", map);
267 GetOptionValue(env, options, "formatMatcher", map);
268 GetOptionValue(env, options, "dayPeriod", map);
271 void GetRelativeTimeOptionValues(napi_env env, napi_value options, std::map<std::string, std::string> &map)
273 GetOptionValue(env, options, "localeMatcher", map);
274 GetOptionValue(env, options, "numeric", map);
275 GetOptionValue(env, options, "style", map);
278 std::string GetLocaleTag(napi_env env, napi_value argv)
284 napi_typeof(env, argv, &valueType);
290 napi_status status = napi_get_value_string_utf8(env, argv, nullptr, 0, &len);
296 status = napi_get_value_string_utf8(env, argv, buf.data(), len + 1, &len);
308 napi_value IntlAddon::LocaleConstructor(napi_env env, napi_callback_info info)
314 napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
318 std::string localeTag = GetLocaleTag(env, argc > 0 ? argv[0] : nullptr);
322 GetOptionValue(env, argv[1], "calendar", map);
323 GetOptionValue(env, argv[1], "collation", map);
324 GetOptionValue(env, argv[1], "hourCycle", map);
325 GetOptionValue(env, argv[1], "numberingSystem", map);
326 GetBoolOptionValue(env, argv[1], "numeric", map);
327 GetOptionValue(env, argv[1], "caseFirst", map);
332 napi_wrap(env, thisVar, reinterpret_cast<void *>(obj.get()), IntlAddon::Destructor, nullptr, nullptr);
337 if (!obj->InitLocaleContext(env, info, localeTag, map)) {
344 bool IntlAddon::InitLocaleContext(napi_env env, napi_callback_info info, const std::string localeTag,
348 napi_status status = napi_get_global(env, &global);
353 env_ = env;
359 void GetLocaleTags(napi_env env, napi_value rawLocaleTag, std::vector<std::string> &localeTags)
362 napi_status status = napi_get_value_string_utf8(env, rawLocaleTag, nullptr, 0, &len);
368 status = napi_get_value_string_utf8(env, rawLocaleTag, buf.data(), len + 1, &len);
376 napi_value IntlAddon::DateTimeFormatConstructor(napi_env env, napi_callback_info info)
382 napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
389 napi_typeof(env, argv[0], &valueType);
391 napi_is_array(env, argv[0], &isArray);
393 GetLocaleTags(env, argv[0], localeTags);
396 napi_get_array_length(env, argv[0], &arrayLength);
399 napi_get_element(env, argv[0], i, &element);
400 GetLocaleTags(env, element, localeTags);
406 GetDateOptionValues(env, argv[1], map);
411 napi_wrap(env, thisVar, reinterpret_cast<void *>(obj.get()), IntlAddon::Destructor, nullptr, nullptr);
416 if (!obj->InitDateTimeFormatContext(env, info, localeTags, map)) {
424 bool IntlAddon::InitDateTimeFormatContext(napi_env env, napi_callback_info info, std::vector<std::string> localeTags,
428 napi_status status = napi_get_global(env, &global);
433 env_ = env;
439 napi_value IntlAddon::RelativeTimeFormatConstructor(napi_env env, napi_callback_info info)
445 napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
452 napi_typeof(env, argv[0], &valueType);
454 napi_is_array(env, argv[0], &isArray);
456 GetLocaleTags(env, argv[0], localeTags);
459 napi_get_array_length(env, argv[0], &arrayLength);
462 napi_get_element(env, argv[0], i, &element);
463 GetLocaleTags(env, element, localeTags);
469 GetRelativeTimeOptionValues(env, argv[1], map);
474 napi_wrap(env, thisVar, reinterpret_cast<void *>(obj.get()), IntlAddon::Destructor, nullptr, nullptr);
479 if (!obj->InitRelativeTimeFormatContext(env, info, localeTags, map)) {
487 bool IntlAddon::InitRelativeTimeFormatContext(napi_env env, napi_callback_info info,
490 env_ = env;
496 napi_value IntlAddon::FormatDateTime(napi_env env, napi_callback_info info)
502 napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
504 int64_t milliseconds = GetMilliseconds(env, argv, 0);
509 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
516 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
524 napi_value IntlAddon::FormatDateTimeRange(napi_env env, napi_callback_info info)
530 napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
535 int64_t firstMilliseconds = GetMilliseconds(env, argv, 0);
536 int64_t secondMilliseconds = GetMilliseconds(env, argv, 1);
541 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
548 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
556 void GetNumberOptionValues(napi_env env, napi_value options, std::map<std::string, std::string> &map)
558 GetOptionValue(env, options, "currency", map);
559 GetOptionValue(env, options, "currencySign", map);
560 GetOptionValue(env, options, "currencyDisplay", map);
561 GetOptionValue(env, options, "unit", map);
562 GetOptionValue(env, options, "unitDisplay", map);
563 GetOptionValue(env, options, "compactDisplay", map);
564 GetOptionValue(env, options, "signDisplay", map);
565 GetOptionValue(env, options, "localeMatcher", map);
566 GetOptionValue(env, options, "style", map);
567 GetOptionValue(env, options, "numberingSystem", map);
568 GetOptionValue(env, options, "notation", map);
569 GetOptionValue(env, options, "unitUsage", map);
570 GetBoolOptionValue(env, options, "useGrouping", map);
571 GetIntegerOptionValue(env, options, "minimumIntegerDigits", map);
572 int64_t minFd = GetIntegerOptionValue(env, options, "minimumFractionDigits", map);
573 int64_t maxFd = GetIntegerOptionValue(env, options, "maximumFractionDigits", map);
578 GetIntegerOptionValue(env, options, "minimumSignificantDigits", map);
579 GetIntegerOptionValue(env, options, "maximumSignificantDigits", map);
582 napi_value IntlAddon::NumberFormatConstructor(napi_env env, napi_callback_info info)
588 napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
595 napi_typeof(env, argv[0], &valueType);
597 napi_is_array(env, argv[0], &isArray);
600 GetLocaleTags(env, argv[0], localeTags);
603 napi_get_array_length(env, argv[0], &arrayLength);
606 napi_get_element(env, argv[0], i, &element);
607 GetLocaleTags(env, element, localeTags);
613 GetNumberOptionValues(env, argv[1], map);
618 napi_wrap(env, thisVar, reinterpret_cast<void *>(obj.get()), IntlAddon::Destructor, nullptr, nullptr);
623 if (!obj->InitNumberFormatContext(env, info, localeTags, map)) {
631 bool IntlAddon::InitNumberFormatContext(napi_env env, napi_callback_info info, std::vector<std::string> localeTags,
635 napi_status status = napi_get_global(env, &global);
640 env_ = env;
646 int64_t IntlAddon::GetMilliseconds(napi_env env, napi_value *argv, int index)
649 napi_status status = napi_get_named_property(env, argv[index], "getTime", &funcGetDateInfo);
655 status = napi_call_function(env, argv[index], funcGetDateInfo, 0, nullptr, &ret_value);
661 status = napi_get_value_int64(env, ret_value, &milliseconds);
669 napi_value IntlAddon::GetLanguage(napi_env env, napi_callback_info info)
673 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
676 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
684 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
692 napi_value IntlAddon::GetScript(napi_env env, napi_callback_info info)
696 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
699 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
707 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
715 napi_value IntlAddon::GetRegion(napi_env env, napi_callback_info info)
719 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
722 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
730 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
738 napi_value IntlAddon::GetBaseName(napi_env env, napi_callback_info info)
742 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
745 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
753 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
761 napi_value IntlAddon::GetCalendar(napi_env env, napi_callback_info info)
765 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
768 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
776 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
784 napi_value IntlAddon::GetCollation(napi_env env, napi_callback_info info)
788 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
791 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
799 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
807 napi_value IntlAddon::GetHourCycle(napi_env env, napi_callback_info info)
811 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
814 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
822 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
830 napi_value IntlAddon::GetNumberingSystem(napi_env env, napi_callback_info info)
834 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
837 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
845 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
853 napi_value IntlAddon::GetNumeric(napi_env env, napi_callback_info info)
857 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
860 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
868 status = napi_get_boolean(env, optionBoolValue, &result);
876 napi_value IntlAddon::GetCaseFirst(napi_env env, napi_callback_info info)
880 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
883 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
890 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
898 napi_value IntlAddon::ToString(napi_env env, napi_callback_info info)
902 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
905 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
913 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
921 napi_value IntlAddon::Maximize(napi_env env, napi_callback_info info)
925 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
928 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
936 status = napi_get_reference_value(env, *g_constructor, &constructor);
943 status = napi_create_string_utf8(env, localeTag.c_str(), NAPI_AUTO_LENGTH, &arg);
948 status = napi_new_instance(env, constructor, 1, &arg, &result);
956 napi_value IntlAddon::Minimize(napi_env env, napi_callback_info info)
960 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
963 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
971 status = napi_get_reference_value(env, *g_constructor, &constructor);
978 status = napi_create_string_utf8(env, localeTag.c_str(), NAPI_AUTO_LENGTH, &arg);
983 status = napi_new_instance(env, constructor, 1, &arg, &result);
991 void SetOptionProperties(napi_env env, napi_value &result, std::map<std::string, std::string> &options,
997 napi_create_string_utf8(env, optionValue.c_str(), NAPI_AUTO_LENGTH, &optionJsValue);
998 napi_set_named_property(env, result, option.c_str(), optionJsValue);
1001 napi_get_undefined(env, &undefined);
1002 napi_set_named_property(env, result, option.c_str(), undefined);
1006 void SetIntegerOptionProperties(napi_env env, napi_value &result, std::map<std::string, std::string> &options,
1015 napi_create_int64(env, integerValue, &optionJsValue);
1016 napi_set_named_property(env, result, option.c_str(), optionJsValue);
1021 napi_get_undefined(env, &undefined);
1022 napi_set_named_property(env, result, option.c_str(), undefined);
1025 void SetBooleanOptionProperties(napi_env env, napi_value &result, std::map<std::string, std::string> &options,
1032 napi_get_boolean(env, optionBoolValue, &optionJsValue);
1033 napi_set_named_property(env, result, option.c_str(), optionJsValue);
1036 napi_get_undefined(env, &undefined);
1037 napi_set_named_property(env, result, option.c_str(), undefined);
1041 napi_value IntlAddon::GetRelativeTimeResolvedOptions(napi_env env, napi_callback_info info)
1045 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
1048 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1054 napi_create_object(env, &result);
1057 SetOptionProperties(env, result, options, "locale");
1058 SetOptionProperties(env, result, options, "style");
1059 SetOptionProperties(env, result, options, "numeric");
1060 SetOptionProperties(env, result, options, "numberingSystem");
1064 napi_value IntlAddon::GetDateTimeResolvedOptions(napi_env env, napi_callback_info info)
1068 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
1071 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1077 napi_create_object(env, &result);
1080 SetOptionProperties(env, result, options, "locale");
1081 SetOptionProperties(env, result, options, "calendar");
1082 SetOptionProperties(env, result, options, "dateStyle");
1083 SetOptionProperties(env, result, options, "timeStyle");
1084 SetOptionProperties(env, result, options, "hourCycle");
1085 SetOptionProperties(env, result, options, "timeZone");
1086 SetOptionProperties(env, result, options, "timeZoneName");
1087 SetOptionProperties(env, result, options, "numberingSystem");
1088 SetBooleanOptionProperties(env, result, options, "hour12");
1089 SetOptionProperties(env, result, options, "weekday");
1090 SetOptionProperties(env, result, options, "era");
1091 SetOptionProperties(env, result, options, "year");
1092 SetOptionProperties(env, result, options, "month");
1093 SetOptionProperties(env, result, options, "day");
1094 SetOptionProperties(env, result, options, "hour");
1095 SetOptionProperties(env, result, options, "minute");
1096 SetOptionProperties(env, result, options, "second");
1097 SetOptionProperties(env, result, options, "dayPeriod");
1098 SetOptionProperties(env, result, options, "localeMatcher");
1099 SetOptionProperties(env, result, options, "formatMatcher");
1103 napi_value IntlAddon::GetNumberResolvedOptions(napi_env env, napi_callback_info info)
1107 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
1110 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1116 napi_create_object(env, &result);
1119 SetOptionProperties(env, result, options, "locale");
1120 SetOptionProperties(env, result, options, "currency");
1121 SetOptionProperties(env, result, options, "currencySign");
1122 SetOptionProperties(env, result, options, "currencyDisplay");
1123 SetOptionProperties(env, result, options, "unit");
1124 SetOptionProperties(env, result, options, "unitDisplay");
1125 SetOptionProperties(env, result, options, "signDisplay");
1126 SetOptionProperties(env, result, options, "compactDisplay");
1127 SetOptionProperties(env, result, options, "notation");
1128 SetOptionProperties(env, result, options, "style");
1129 SetOptionProperties(env, result, options, "numberingSystem");
1130 SetOptionProperties(env, result, options, "unitUsage");
1131 SetBooleanOptionProperties(env, result, options, "useGrouping");
1132 SetIntegerOptionProperties(env, result, options, "minimumIntegerDigits");
1133 SetIntegerOptionProperties(env, result, options, "minimumFractionDigits");
1134 SetIntegerOptionProperties(env, result, options, "maximumFractionDigits");
1135 SetIntegerOptionProperties(env, result, options, "minimumSignificantDigits");
1136 SetIntegerOptionProperties(env, result, options, "maximumSignificantDigits");
1137 SetOptionProperties(env, result, options, "localeMatcher");
1141 napi_value IntlAddon::FormatNumber(napi_env env, napi_callback_info info)
1147 napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
1149 napi_get_value_double(env, argv[0], &number);
1151 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1158 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
1166 void GetCollatorLocaleMatcher(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1168 GetOptionValue(env, options, "localeMatcher", map);
1181 void GetCollatorUsage(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1183 GetOptionValue(env, options, "usage", map);
1196 void GetCollatorSensitivity(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1198 GetOptionValue(env, options, "sensitivity", map);
1211 void GetCollatorIgnorePunctuation(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1213 GetBoolOptionValue(env, options, "ignorePunctuation", map);
1226 void GetCollatorNumeric(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1228 GetBoolOptionValue(env, options, "numeric", map);
1239 void GetCollatorCaseFirst(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1241 GetOptionValue(env, options, "caseFirst", map);
1252 void GetCollatorCollation(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1254 GetOptionValue(env, options, "collation", map);
1281 void GetCollatorOptionValue(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1283 GetCollatorLocaleMatcher(env, options, map);
1284 GetCollatorUsage(env, options, map);
1285 GetCollatorSensitivity(env, options, map);
1286 GetCollatorIgnorePunctuation(env, options, map);
1287 GetCollatorNumeric(env, options, map);
1288 GetCollatorCaseFirst(env, options, map);
1289 GetCollatorCollation(env, options, map);
1292 napi_value IntlAddon::InitCollator(napi_env env, napi_value exports)
1301 status = napi_define_class(env, "Collator", NAPI_AUTO_LENGTH, CollatorConstructor, nullptr,
1308 status = napi_set_named_property(env, exports, "Collator", constructor);
1316 napi_value IntlAddon::CollatorConstructor(napi_env env, napi_callback_info info)
1322 napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
1329 napi_typeof(env, argv[0], &valueType);
1331 napi_is_array(env, argv[0], &isArray);
1333 GetLocaleTags(env, argv[0], localeTags);
1336 napi_get_array_length(env, argv[0], &arrayLength);
1339 napi_get_element(env, argv[0], i, &element);
1340 GetLocaleTags(env, element, localeTags);
1346 GetCollatorOptionValue(env, argv[1], map);
1351 napi_wrap(env, thisVar, reinterpret_cast<void *>(obj.get()), IntlAddon::Destructor, nullptr, nullptr);
1356 if (!obj->InitCollatorContext(env, info, localeTags, map)) {
1364 bool IntlAddon::InitCollatorContext(napi_env env, napi_callback_info info, std::vector<std::string> localeTags,
1368 napi_status status = napi_get_global(env, &global);
1373 env_ = env;
1379 bool GetStringParameter(napi_env env, napi_value value, std::vector<char> &buf)
1382 napi_typeof(env, value, &valueType);
1388 napi_status status = napi_get_value_string_utf8(env, value, nullptr, 0, &len);
1394 status = napi_get_value_string_utf8(env, value, buf.data(), len + 1, &len);
1403 napi_value IntlAddon::FormatRelativeTime(napi_env env, napi_callback_info info)
1409 napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
1412 status = napi_get_value_double(env, argv[0], &number);
1418 if (!GetStringParameter(env, argv[1], unit)) {
1422 status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1429 status = napi_create_string_utf8(env, value.c_str(), NAPI_AUTO_LENGTH, &result);
1437 void IntlAddon::FillInArrayElement(napi_env env, napi_value &result, napi_status &status,
1442 status = napi_create_string_utf8(env, timeVector[i][1].c_str(), NAPI_AUTO_LENGTH, &value);
1448 status = napi_create_string_utf8(env, timeVector[i][0].c_str(), NAPI_AUTO_LENGTH, &type);
1456 status = napi_create_string_utf8(env, timeVector[i][unitIndex].c_str(), NAPI_AUTO_LENGTH, &unit);
1462 napi_get_undefined(env, &unit);
1465 status = napi_create_object(env, &formatInfo);
1470 napi_set_named_property(env, formatInfo, "type", type);
1471 napi_set_named_property(env, formatInfo, "value", value);
1472 napi_set_named_property(env, formatInfo, "unit", unit);
1473 status = napi_set_element(env, result, i, formatInfo);
1481 napi_value IntlAddon::FormatToParts(napi_env env, napi_callback_info info)
1487 napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
1489 napi_get_value_double(env, argv[0], &number);
1491 if (!GetStringParameter(env, argv[1], unit)) {
1495 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1503 status = napi_create_array_with_length(env, timeVector.size(), &result);
1508 FillInArrayElement(env, result, status, timeVector);
1512 napi_value IntlAddon::CompareString(napi_env env, napi_callback_info info)
1518 napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
1521 if (!GetStringParameter(env, argv[0], first)) {
1526 if (!GetStringParameter(env, argv[1], second)) {
1531 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1539 status = napi_create_int32(env, compareResult, &result);
1548 napi_value IntlAddon::GetCollatorResolvedOptions(napi_env env, napi_callback_info info)
1552 napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
1555 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1561 napi_create_object(env, &result);
1564 SetOptionProperties(env, result, options, "localeMatcher");
1565 SetOptionProperties(env, result, options, "locale");
1566 SetOptionProperties(env, result, options, "usage");
1567 SetOptionProperties(env, result, options, "sensitivity");
1568 SetBooleanOptionProperties(env, result, options, "ignorePunctuation");
1569 SetBooleanOptionProperties(env, result, options, "numeric");
1570 SetOptionProperties(env, result, options, "caseFirst");
1571 SetOptionProperties(env, result, options, "collation");
1575 void GetPluralRulesType(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1577 GetOptionValue(env, options, "type", map);
1590 void GetPluralRulesInteger(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1592 GetIntegerOptionValue(env, options, "minimumIntegerDigits", map);
1607 void GetPluralRulesFractions(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1609 GetIntegerOptionValue(env, options, "minimumFractionDigits", map);
1621 GetIntegerOptionValue(env, options, "maximumFractionDigits", map);
1634 void GetPluralRulesSignificant(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1637 GetIntegerOptionValue(env, options, "minimumSignificantDigits", map);
1653 GetIntegerOptionValue(env, options, "maximumSignificantDigits", map);
1667 void GetPluralRulesOptionValues(napi_env env, napi_value options, std::map<std::string, std::string> &map)
1669 GetCollatorLocaleMatcher(env, options, map);
1670 GetPluralRulesType(env, options, map);
1671 GetPluralRulesInteger(env, options, map);
1672 GetPluralRulesFractions(env, options, map);
1673 GetPluralRulesSignificant(env, options, map);
1676 napi_value IntlAddon::InitPluralRules(napi_env env, napi_value exports)
1684 status = napi_define_class(env, "PluralRules", NAPI_AUTO_LENGTH, PluralRulesConstructor, nullptr,
1691 status = napi_set_named_property(env, exports, "PluralRules", constructor);
1699 napi_value IntlAddon::PluralRulesConstructor(napi_env env, napi_callback_info info)
1705 napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
1712 napi_typeof(env, argv[0], &valueType);
1714 napi_is_array(env, argv[0], &isArray);
1716 GetLocaleTags(env, argv[0], localeTags);
1719 napi_get_array_length(env, argv[0], &arrayLength);
1722 napi_get_element(env, argv[0], i, &element);
1723 GetLocaleTags(env, element, localeTags);
1729 GetPluralRulesOptionValues(env, argv[1], map);
1734 napi_wrap(env, thisVar, reinterpret_cast<void *>(obj.get()), IntlAddon::Destructor, nullptr, nullptr);
1739 if (!obj->InitPluralRulesContext(env, info, localeTags, map)) {
1747 bool IntlAddon::InitPluralRulesContext(napi_env env, napi_callback_info info, std::vector<std::string> localeTags,
1751 napi_status status = napi_get_global(env, &global);
1756 env_ = env;
1762 napi_value IntlAddon::Select(napi_env env, napi_callback_info info)
1768 napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
1770 napi_typeof(env, argv[0], &valueType);
1777 napi_status status = napi_get_value_double(env, argv[0], &number);
1784 status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj));
1792 status = napi_create_string_utf8(env, res.c_str(), NAPI_AUTO_LENGTH, &result);
1800 napi_value Init(napi_env env, napi_value exports)
1802 napi_value val = IntlAddon::InitLocale(env, exports);
1803 val = IntlAddon::InitDateTimeFormat(env, val);
1804 val = IntlAddon::InitNumberFormat(env, val);
1805 val = IntlAddon::InitCollator(env, val);
1806 val = IntlAddon::InitRelativeTimeFormat(env, val);
1807 return IntlAddon::InitPluralRules(env, val);