UNPKG

nornj

Version:

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

177 lines (146 loc) 7.58 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.createTmplRule = createTmplRule; var _core = _interopRequireDefault(require("../core")); var tools = _interopRequireWildcard(require("./tools")); 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 }; } function _createRegExp(reg, mode) { return new RegExp(reg, mode); } //Clear the repeated characters function _clearRepeat(str) { var ret = '', i = 0, _char; var l = str.length; for (; i < l; i++) { _char = str[i]; if (ret.indexOf(_char) < 0) { ret += _char; } } return ret; } function _replace$(str) { return str.replace(/\$/g, '\\$'); } function _replaceMinus(str) { return str.replace(/-/g, '\\-'); } function _replaceMulti(str) { return str.replace(/\*/g, '\\*'); } function createTmplRule() { var rules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var isGlobal = arguments.length > 1 ? arguments[1] : undefined; var _nj$tmplRule = _core["default"].tmplRule, _nj$tmplRule$startRul = _nj$tmplRule.startRule, startRule = _nj$tmplRule$startRul === void 0 ? '{{' : _nj$tmplRule$startRul, _nj$tmplRule$endRule = _nj$tmplRule.endRule, endRule = _nj$tmplRule$endRule === void 0 ? '}}' : _nj$tmplRule$endRule, _nj$tmplRule$extensio = _nj$tmplRule.extensionRule, extensionRule = _nj$tmplRule$extensio === void 0 ? 'n-' : _nj$tmplRule$extensio, _nj$tmplRule$propRule = _nj$tmplRule.propRule, propRule = _nj$tmplRule$propRule === void 0 ? 'p-' : _nj$tmplRule$propRule, _nj$tmplRule$strPropR = _nj$tmplRule.strPropRule, strPropRule = _nj$tmplRule$strPropR === void 0 ? 's' : _nj$tmplRule$strPropR, _nj$tmplRule$template = _nj$tmplRule.templateRule, templateRule = _nj$tmplRule$template === void 0 ? 'template' : _nj$tmplRule$template, _nj$tmplRule$tagSpRul = _nj$tmplRule.tagSpRule, tagSpRule = _nj$tmplRule$tagSpRul === void 0 ? '#$@' : _nj$tmplRule$tagSpRul, _nj$tmplRule$commentR = _nj$tmplRule.commentRule, commentRule = _nj$tmplRule$commentR === void 0 ? '-' : _nj$tmplRule$commentR; var start = rules.start, end = rules.end, extension = rules.extension, prop = rules.prop, strProp = rules.strProp, template = rules.template, tagSp = rules.tagSp, comment = rules.comment, rawStart = rules.rawStart, rawEnd = rules.rawEnd; if (start) { startRule = start; } if (end) { endRule = end; } if (extension) { extensionRule = extension; } if (prop) { propRule = prop; } if (strProp) { strPropRule = strProp; } if (template) { templateRule = template; } if (tagSp) { tagSpRule = tagSp; } if (comment != null) { commentRule = comment; } var firstChar = rawStart != null ? rawStart : startRule[0], lastChar = rawEnd != null ? rawEnd : endRule[endRule.length - 1], allRules = firstChar + lastChar, extensionRules = _replaceMinus(_clearRepeat(extensionRule + propRule + strPropRule + tagSpRule)), escapeExtensionRule = _replace$(extensionRule), escapePropRule = _replace$(propRule), escapeStrPropRule = _replace$(strPropRule), startRuleR = firstChar + startRule, endRuleR = endRule + lastChar, varContent = '[\\s\\S]+?', varContentS = '\\.\\.\\.' + varContent, braceParamStr = _replaceMulti(startRuleR + varContent + endRuleR + '|' + startRule + varContent + endRule), escapeStartRule = _replaceMulti(startRule), escapeEndRule = _replaceMulti(endRule), escapeStartRuleR = _replaceMulti(startRuleR), escapeEndRuleR = _replaceMulti(endRuleR); var tmplRules = { startRule: startRule, endRule: endRule, extensionRule: extensionRule, propRule: propRule, strPropRule: strPropRule, templateRule: templateRule, tagSpRule: tagSpRule, commentRule: commentRule, firstChar: firstChar, lastChar: lastChar, braceParamStr: braceParamStr, xmlOpenTag: _createRegExp('^<([a-z' + firstChar + extensionRules + '][^\\s>]*)[^>]*>$', 'i'), openTagParams: _createRegExp('[\\s]+(((' + escapeStartRuleR + '(' + varContent + ')' + escapeEndRuleR + ')|(' + escapeStartRule + '(' + varContent + ')' + escapeEndRule + '))|[^\\s=>]+)(=((\'[^\']+\')|("[^"]+")|([^"\'\\s]+)))?', 'g'), directives: _createRegExp('[\\s]+(((' + escapeStartRuleR + '(' + varContent + ')' + escapeEndRuleR + ')|(' + escapeStartRule + '(' + varContent + ')' + escapeEndRule + '))|((:?)(' + escapeExtensionRule + ')?([^\\s=>]+)))(=((\'[^\']+\')|("[^"]+")|([^"\'\\s>]+)))?', 'g'), braceParam: _createRegExp(braceParamStr, 'i'), braceParamG: _createRegExp(braceParamStr, 'ig'), spreadProp: _createRegExp('[\\s]+(' + escapeStartRuleR + '[\\s]*(' + varContentS + ')' + escapeEndRuleR + ')|(' + escapeStartRule + '[\\s]*(' + varContentS + ')' + escapeEndRule + ')', 'g'), replaceSplit: _createRegExp(braceParamStr), replaceParam: _createRegExp('((' + escapeStartRuleR + ')(' + varContent + ')' + escapeEndRuleR + ')|((' + escapeStartRule + ')(' + varContent + ')' + escapeEndRule + ')', 'g'), checkElem: _createRegExp('([^<>]+)|(<([a-z/!' + firstChar + extensionRules + '][^\\s<>]*)([^<>]*)>|<)([^<]*)', 'ig'), extension: _createRegExp('^' + escapeExtensionRule + '([^\\s]+)', 'i'), exAll: _createRegExp('^([/]?)(' + escapeExtensionRule + '|' + escapeStrPropRule + escapePropRule + '|' + escapePropRule + ')([^\\s]+)', 'i'), include: _createRegExp('<' + escapeExtensionRule + 'include([^>]*)>', 'ig'), incompleteStart: _createRegExp(startRule + '((?!' + escapeEndRule + ')[\\s\\S])*$'), incompleteStartR: _createRegExp(escapeStartRuleR + '((?!' + escapeEndRuleR + ')[\\s\\S])*$'), incompleteEnd: _createRegExp('^[\\s\\S]*?' + escapeEndRule), incompleteEndR: _createRegExp('^[\\s\\S]*?' + escapeEndRuleR) }; if (isGlobal) { //Reset the regexs to global list tools.assign(_core["default"].tmplRule, tmplRules); } else { return tmplRules; } } //Set global template rules createTmplRule({}, true); tools.assign(_core["default"], { createTmplRule: createTmplRule });