fastlion-amis
Version:
一种MIS页面生成工具
58 lines (57 loc) • 2.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = void 0;
var tslib_1 = require("tslib");
var template_1 = (0, tslib_1.__importDefault)(require("lodash/template"));
var tpl_builtin_1 = require("./tpl-builtin");
var moment_1 = (0, tslib_1.__importDefault)(require("moment"));
var imports = {
default: undefined,
moment: moment_1.default,
countDown: function (end) {
if (!end) {
return '--';
}
var date = new Date(parseInt(end, 10) * 1000);
var now = Date.now();
if (date.getTime() < now) {
return '已结束';
}
return Math.ceil((date.getTime() - now) / (1000 * 60 * 60 * 24)) + '天';
},
formatDate: function (value, format, inputFormat) {
if (format === void 0) { format = 'LLL'; }
if (inputFormat === void 0) { inputFormat = ''; }
return (0, moment_1.default)(value, inputFormat).format(format);
}
};
// 缓存一下提升性能
var EVAL_CACHE = {};
function lodashCompile(str, data) {
try {
var filters = (0, tpl_builtin_1.getFilters)();
var finnalImports = (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, filters), { formatTimeStamp: filters.date, formatNumber: filters.number, defaultValue: filters.defaut }), imports);
delete finnalImports.default; // default 是个关键字,不能 imports 到 lodash 里面去。
var fn = EVAL_CACHE[str] ||
(EVAL_CACHE[str] = (0, template_1.default)(str, {
imports: finnalImports,
variable: 'data',
// 如果不传这个,默认模板语法也存在 ${xxx} 语法,这个跟内置语法规则冲突。
// 为了不带来困惑,禁用掉这种用法。
interpolate: /<%=([\s\S]+?)%>/g
}));
return fn.call(data, data);
}
catch (e) {
return "<span class=\"text-danger\">" + e.message + "</span>";
}
}
function register() {
return {
name: 'lodash',
test: function (str) { return !!~str.indexOf('<%'); },
compile: function (str, data) { return lodashCompile(str, data); }
};
}
exports.register = register;
//# sourceMappingURL=./utils/tpl-lodash.js.map
;