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  }