• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef OHOS_GLOBAL_I18N_VARIABLE_CONVERTOR_H
16 #define OHOS_GLOBAL_I18N_VARIABLE_CONVERTOR_H
17 
18 #include <map>
19 #include <string>
20 #include <vector>
21 #include "i18n_types.h"
22 #include "locale_info.h"
23 #include "napi/native_api.h"
24 #include "napi/native_node_api.h"
25 
26 namespace OHOS {
27 namespace Global {
28 namespace I18n {
29 class VariableConvertor {
30 public:
31     // Check napi variable is null
32     static bool CheckNapiIsNull(napi_env env, napi_value value);
33 
34     // Convert napi variable to c++ variable
35     static void GetOptionValue(napi_env env, napi_value options, const std::string &optionName, std::string &value);
36     static bool GetBoolOptionValue(napi_env env, napi_value &options, const std::string &optionName, bool &boolVal);
37     static std::string GetString(napi_env env, napi_value value, int32_t &code);
38     static double GetDouble(napi_env env, napi_value value, int32_t &code);
39     static int32_t GetInt(napi_env env, napi_value value, int32_t &code);
40     static bool GetStringArrayFromJsParam(napi_env env, napi_value &jsArray, const std::string& valueName,
41         std::vector<std::string> &strArray);
42 
43     // Convert c++ variable to napi variable
44     static napi_value CreateString(napi_env env, const std::string &str);
45     static napi_value CreateNumber(napi_env env, const int32_t &num);
46     static void VerifyType(napi_env env, const std::string& valueName, napi_valuetype napiType, napi_value argv);
47     static napi_status SetEnumValue(napi_env env, napi_value enumObj, const std::string& enumName, int32_t enumVal);
48     static LocaleType GetLocaleType(napi_env env, napi_value locale);
49     static std::shared_ptr<LocaleInfo> ParseLocaleInfo(napi_env env, napi_value localeInfo);
50     static std::string ParseBuiltinsLocale(napi_env env, napi_value intlLocale);
51     static napi_value CreateBuiltinsLocaleObject(napi_env env, const std::string& locale);
52     static napi_value CreateMap(napi_env env, std::unordered_map<std::string, std::string>& ump);
53 
54 private:
55     static napi_value GetBuiltinsLocaleConstructor(napi_env env);
56     static bool IsBuiltinsLocale(napi_env env, napi_value locale);
57 
58     static const std::map<napi_valuetype, std::string> NAPI_TYPE_MAP;
59 };
60 } // namespace I18n
61 } // namespace Global
62 } // namespace OHOS
63 #endif