UNPKG

nornj

Version:

A powerful template engine that can works with React, JSX enhancement or alternative tools.

311 lines (270 loc) 8.76 kB
"use strict"; function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.registerFilter = registerFilter; exports.filterConfig = exports.filters = void 0; var _core = _interopRequireDefault(require("../core")); var tools = _interopRequireWildcard(require("../utils/tools")); var _transformData = require("../transforms/transformData"); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var REGEX_DIGITS_RE = /(\d{3})(?=\d)/g; //Global filter list var filters = { //Get properties '.': function _(obj, prop, callFn) { if (obj == null) { return obj; } if (obj._njSrc) { return { source: obj.value, value: obj.value[prop], prop: prop, parent: obj, _njSrc: true }; } else if (callFn) { return { source: obj, value: obj[prop], prop: prop, _njSrc: true }; } return obj[prop]; }, //Call function _: function _(fn, args) { if (fn == null) { return fn; } if (fn._njSrc) { var _fn = fn.source[fn.prop]; return _fn != null ? _fn.apply(fn.source, args) : _fn; } return fn.apply(null, args); }, //Get accessor properties '#': function _(obj, prop, options) { if (obj == null) { return obj; } return (0, _transformData.getAccessorData)(obj[prop], options.context); }, '**': function _(val1, val2) { var ret = Math.pow(val1, val2); return isNaN(ret) ? 0 : ret; }, '%%': function _(val1, val2) { var ret = Math.floor(val1 / val2); return isNaN(ret) ? 0 : ret; }, //Ternary operator '?:': function _(val, val1, val2) { return val ? val1 : val2; }, '!': function _(val) { return !val; }, //Convert to int "int": function int(val) { var radix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; var ret = parseInt(val, radix); return isNaN(ret) ? 0 : ret; }, //Convert to float "float": function float(val, bit) { var ret = parseFloat(val); return isNaN(ret) ? 0 : bit != null ? ret.toFixed(bit) : ret; }, //Convert to boolean bool: function bool(val) { if (val === 'false') { return false; } return Boolean(val); }, reg: function reg(pattern, flags) { return new RegExp(pattern, flags); }, //Transform css string to object css: function css(cssText) { return (0, _transformData.styleProps)(cssText); }, //Generate array by two positive integers,closed interval rOpe: _getArrayByNum(1), //Generate array by two positive integers,right open interval rLt: _getArrayByNum(0), //Compare two number or letter '<=>': function _(val1, val2) { if (val1 > val2) { return 1; } else if (val1 == val2) { return 0; } else { return -1; } }, upperFirst: function upperFirst(str) { return tools.upperFirst(str); }, lowerFirst: function lowerFirst(str) { return tools.lowerFirst(str); }, camelCase: function camelCase(str) { return tools.camelCase(str); }, isObject: function isObject(val) { return tools.isObject(val); }, isNumber: function isNumber(val) { return tools.isNumber(val); }, isString: function isString(val) { return tools.isString(val); }, isArrayLike: function isArrayLike(val) { return tools.isArrayLike(val); }, currency: function currency(value, decimals, symbol, placeholder) { if (!(value - parseFloat(value) >= 0)) { return placeholder != null ? placeholder : filterConfig.currency.placeholder; } value = parseFloat(value); symbol = decimals != null && tools.isString(decimals) ? decimals : symbol; symbol = symbol != null && tools.isString(symbol) ? symbol : filterConfig.currency.symbol; decimals = decimals != null && tools.isNumber(decimals) ? decimals : 2; var stringified = Math.abs(value).toFixed(decimals); var _int = decimals ? stringified.slice(0, -1 - decimals) : stringified; var i = _int.length % 3; var head = i > 0 ? _int.slice(0, i) + (_int.length > 3 ? ',' : '') : ''; var _float = decimals ? stringified.slice(-1 - decimals) : ''; var sign = value < 0 ? '-' : ''; return sign + symbol + head + _int.slice(i).replace(REGEX_DIGITS_RE, '$1,') + _float; } }; exports.filters = filters; function _getArrayByNum(isContainEnd) { return function (val1, val2) { return Object.keys(Array.apply(null, { length: val2 - val1 + isContainEnd })).map(function (item) { return +item + val1; }); }; } function _config(params, extra) { var ret = { onlyGlobal: false, hasOptions: false, isOperator: false, hasLevel: false, hasTmplCtx: true, alias: null }; if (params) { ret = tools.assign(ret, params); } if (extra) { ret = tools.assign(ret, extra); } return ret; } var _defaultCfg = { onlyGlobal: true, hasOptions: false }; //Filter default config var filterConfig = { '.': _config(_defaultCfg), _: _config({ onlyGlobal: true }), '#': _config({ onlyGlobal: true, hasOptions: true, hasLevel: true }), '**': _config(_defaultCfg), '%%': _config(_defaultCfg), '?:': _config(_defaultCfg), '!': _config(_defaultCfg), "int": _config(_defaultCfg), "float": _config(_defaultCfg), bool: _config(_defaultCfg), reg: _config(_defaultCfg), css: _config(_defaultCfg), rOpe: _config(_defaultCfg), rLt: _config(_defaultCfg), '<=>': _config(_defaultCfg), upperFirst: _config(_defaultCfg), lowerFirst: _config(_defaultCfg), camelCase: _config(_defaultCfg), isObject: _config(_defaultCfg), isNumber: _config(_defaultCfg), isString: _config(_defaultCfg), isArrayLike: _config(_defaultCfg), currency: _config(_defaultCfg, { symbol: '$', placeholder: '' }) }; exports.filterConfig = filterConfig; filters.capitalize = filters.upperFirst; filterConfig.capitalize = _config(filterConfig.upperFirst); function registerFilter(name, filter, options, mergeConfig) { var params = name; if (!tools.isObject(name)) { params = {}; params[name] = { filter: filter, options: options }; } tools.each(params, function (v, name) { if (v) { var _filter = v.filter, _options = v.options; if (_options) { if (_options.isOperator) { var createRegexOperators = _core["default"].createRegexOperators; if (createRegexOperators) { createRegexOperators(name); } } var alias = _options.alias; if (alias) { var createFilterAlias = _core["default"].createFilterAlias; if (createFilterAlias) { createFilterAlias(name, alias); } name = alias; } } if (_filter) { filters[name] = _filter; } else if (!mergeConfig) { filters[name] = v; } if (mergeConfig) { if (!filterConfig[name]) { filterConfig[name] = _config(); } if (tools.isObject(_options)) { tools.assign(filterConfig[name], _options); } else { filterConfig[name] = _config(); } } else { filterConfig[name] = _config(_options); } } }, false); } tools.assign(_core["default"], { filters: filters, filterConfig: filterConfig, registerFilter: registerFilter });