github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/client/src/app/utils/text-map.js (about) 1 import {formatString} from './string'; 2 3 /** 4 * 文本表类 5 */ 6 export default class TextMap { 7 /** 8 * 创建一个文本表类实例 9 * @param {Map<String, String>} data 数据类型 10 * @memberof TextMap 11 */ 12 constructor(data) { 13 this._data = {...data}; 14 } 15 16 /** 17 * 获取数据对象 18 * @memberof TextMap 19 * @type {Map<String, String>} 20 * @readonly 21 */ 22 get data() { 23 return {...this._data}; 24 } 25 26 /** 27 * 获取使用参数格式化的文本 28 * 29 * @param {string} name 配置名称 30 * @param {...any} args 格式化参数 31 * @return {string} 文本 32 */ 33 format(name, ...args) { 34 const str = this.string(name); 35 if (str === undefined || !str.length) { 36 return ''; 37 } 38 if (args && args.length) { 39 try { 40 return formatString(str, ...args); 41 } catch (e) { 42 throw new Error(`Cannot format lang string with key '${name}', the lang string is '${str}'.`); 43 } 44 } 45 return str; 46 } 47 48 /** 49 * 根据配置名称获取文本 50 * @param {string} name 配置名称 51 * @param {string} defaultValue 默认文本,如果没有在找到文本则返回此值 52 * @return {string} 文本 53 */ 54 string(name, defaultValue= '') { 55 const value = this._data[name]; 56 return !value ? defaultValue : value; 57 } 58 }