1 /*
2 * Copyright (c) 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 #include "find_rule.h"
16 #include "i18n_hilog.h"
17
18 namespace OHOS {
19 namespace Global {
20 namespace I18n {
FindRule(icu::UnicodeString & regex,std::string & insensitive)21 FindRule::FindRule(icu::UnicodeString& regex, std::string& insensitive)
22 {
23 this->regex = regex;
24 this->insensitive = insensitive;
25 if (regex.length() == 0) {
26 return;
27 }
28 }
29
GetPattern()30 icu::RegexPattern* FindRule::GetPattern()
31 {
32 UErrorCode status = U_ZERO_ERROR;
33 icu::RegexPattern* pattern;
34 // Sets whether regular expression matching is case sensitive
35 if (insensitive == "True") {
36 pattern = icu::RegexPattern::compile(this->regex, URegexpFlag::UREGEX_CASE_INSENSITIVE, status);
37 } else {
38 pattern = icu::RegexPattern::compile(this->regex, 0, status);
39 }
40 if (U_FAILURE(status)) {
41 HILOG_ERROR_I18N("FindRule::GetPattern: Compile regex pattern failed.");
42 return nullptr;
43 }
44 return pattern;
45 }
46 } // namespace I18n
47 } // namespace Global
48 } // namespace OHOS