1/* 2 * Copyright (c) 2023 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 16import { StringResourceId } from './constant'; 17 18const ZH_STRING_MAP: Map<number, string> = new Map([ 19 [StringResourceId.INPUT_FILE_NOT_FOUND, '找不到d.ts文件'], 20 [StringResourceId.INPUT_FILE_CONTENT_EMPTY, '文件无内容'], 21 [StringResourceId.COMMAND_INPUT_DESCRIPTION, 'd.ts文件或包含d.ts的文件夹'], 22 [StringResourceId.COMMAND_OUT_DESCRIPTION, '新的d.ts输出文件或目录'], 23 [StringResourceId.NOT_DTS_FILE, '输入文件不是d.ts文件'], 24 [StringResourceId.COMMAND_LOGLEVEL_DESCRIPTION, '日志输出级别[INFO,WARN,DEBUG,ERR]'], 25 [StringResourceId.COMMAND_SPLIT_API, '是否拆分接口'], 26 [StringResourceId.COMMAND_RULE, '整改规则文件'], 27 [StringResourceId.INVALID_PATH, '不是合法的路径'], 28 [StringResourceId.OUTPUT_MUST_FILE, '输出路径需要指向文件'], 29 [StringResourceId.OUTPUT_MUST_DIR, '输出路径需要指向目录'], 30 [StringResourceId.OUTPUT_SAME_WITH_INPUT, '输出文件路径与输入文件路径相同'], 31 [StringResourceId.OUTPUT_SUBDIR_INPUT, '输出目录不能是输入目录的子目录'], 32 [StringResourceId.START_MESSAGE, '正在处理, 请稍后 ...'], 33 [StringResourceId.COMMAND_BRANCH, 'OpenHarmony 分支名'], 34 [StringResourceId.VERSION_HINT, '告警, 需要nodejs $0.$1.$2+'], 35 [StringResourceId.COMMAND_TEST, '仅供内部测试使用'] 36]); 37 38const EN_STRING_MAP: Map<number, string> = new Map([ 39 [StringResourceId.INPUT_FILE_NOT_FOUND, 'd.ts is not found'], 40 [StringResourceId.INPUT_FILE_CONTENT_EMPTY, 'file is empty'], 41 [StringResourceId.COMMAND_INPUT_DESCRIPTION, 'absolute path of the file'], 42 [StringResourceId.COMMAND_OUT_DESCRIPTION, 'absolute path of the file'], 43 [StringResourceId.NOT_DTS_FILE, 'not a d.ts file'], 44 [StringResourceId.COMMAND_LOGLEVEL_DESCRIPTION, 'log level [INFO,WARN,DEBUG,ERR]'], 45 [StringResourceId.COMMAND_SPLIT_API, 'split event api'], 46 [StringResourceId.COMMAND_RULE, 'rule file'], 47 [StringResourceId.INVALID_PATH, 'path is invalid'], 48 [StringResourceId.OUTPUT_MUST_FILE, 'the output path must be a file'], 49 [StringResourceId.OUTPUT_MUST_DIR, 'the output path must be a folder'], 50 [StringResourceId.OUTPUT_SAME_WITH_INPUT, 'the output file path is same as the input file path'], 51 [StringResourceId.OUTPUT_SUBDIR_INPUT, 'the output directory cannot be a subdirectory of the input directory'], 52 [StringResourceId.START_MESSAGE, 'Processing please wait ...'], 53 [StringResourceId.COMMAND_BRANCH, 'OpenHarmony branch name'], 54 [StringResourceId.VERSION_HINT, 'warning, nodejs version $0.$1.$2+ is required'], 55 [StringResourceId.COMMAND_TEST, 'just for internal test'] 56]); 57 58export class StringResource { 59 static stringMap: Map<number, string> = ZH_STRING_MAP; 60 static getString(key: number): string { 61 return this.stringMap.get(key) || `unknown string resource ${key}`; 62 } 63} 64 65export class StringUtils { 66 static isEmpty(str: string | undefined): boolean { 67 return str === undefined || str.length === 0; 68 } 69 70 static hasSubstring(str: string, sub: string | RegExp): boolean { 71 return str.search(sub) !== -1; 72 } 73 74 static replaceAt(src: string, index: number, replacement: string): string { 75 return src.substring(0, index) + replacement + src.substring(index + replacement.length); 76 } 77 78 static formatString(pattern: string, args: Array<number>): string { 79 let newStr = pattern; 80 for (let index = 0; index < args.length; index++) { 81 newStr = newStr.replace(`$${index}`, `${args[index]}`); 82 } 83 return newStr; 84 } 85} 86 87export class LogReportStringUtils { 88 static createErrorInfo(errorInfo: string, params: string[]): string { 89 params.forEach((param: string) => { 90 errorInfo = errorInfo.replace('$$', param); 91 }); 92 return errorInfo; 93 } 94}