UNPKG

@morjs/runtime-web

Version:
76 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseDatasetValue = exports.toJsonString = void 0; function toJsonString(value, isDataSet = false) { if (isDataSet) { switch (typeof value) { case 'string': { return value; } case 'object': { if (value == null) { return '$.nul()'; } return `$.value(${JSON.stringify(value)})`; } case 'function': { return ''; // throw new Error('dataset 数据不允许传 function'); } case 'undefined': { return '$.undefined()'; } case 'bigint': case 'number': case 'boolean': { return `$.value(${value})`; } default: { return `$.value(${value})`; } } } else { if (typeof value === 'object') { return JSON.stringify(value); } return value; } } exports.toJsonString = toJsonString; const DataSetParser = { nul() { return null; }, undefined() { return undefined; }, value(v) { return v; } }; const DATA_SET_PARSER_REGEXP = /^\$\.(value|nul|undefined)\(/; /** * 解析dataset value * @param {*} str */ function parseDatasetValue(str) { // eslint-disable-next-line @typescript-eslint/no-unused-vars const $ = DataSetParser; try { // 限定 eval 的使用范围 // 仅用于 DataSetParser 中包含的方法 // 其他情况直接返回字符串 if (typeof str === 'string' && DATA_SET_PARSER_REGEXP.test(str)) { return eval(str); } else { return str; } } catch (e) { return str; } } exports.parseDatasetValue = parseDatasetValue; //# sourceMappingURL=attribute-value.js.map