UNPKG

js-markdown

Version:
113 lines (95 loc) 2.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; /** * match a emphasize * * syntax like this: * * **strong emphasized** * __strong emphasized__ * * or * * *weak emphasized* * _weak emphasized_ * * and emphasize can be nested * */ var EmphasizeType = { DOUBLE: Symbol('DOUBLE'), STRONG: Symbol('STRONG'), WEAK: Symbol('WEAK') }; /** * reg like: * /^([*]{2})((\\\*|[^*])*?)(\1)/ * * @param flag * @param count * @returns {RegExp} */ function generateRegExp(flag, count) { return new RegExp("^([".concat(flag, "]{").concat(count, "})((\\\\\\").concat(flag, "|[^").concat(flag, "])*?)(\\1)")); } function parse(str, children, renderTree) { var flag = str.at(0); var resultDouble = str.match(generateRegExp(flag, 3)); if (resultDouble && resultDouble[2]) { var node = { // strong root node type: 'Emphasize', emphasizeType: EmphasizeType.DOUBLE, rawValue: resultDouble[2] }; // parse recursively this.parseInline(node); return [node, resultDouble[2].length + 6]; } var resultStrong = str.match(generateRegExp(flag, 2)); if (resultStrong && resultStrong[2]) { var _node = { // strong root node type: 'Emphasize', emphasizeType: EmphasizeType.STRONG, rawValue: resultStrong[2] }; // parse recursively this.parseInline(_node); return [_node, resultStrong[2].length + 4]; } var resultWeak = str.match(generateRegExp(flag, 1)); if (resultWeak && resultWeak[2]) { var _node2 = { // strong root node type: 'Emphasize', emphasizeType: EmphasizeType.WEAK, rawValue: resultWeak[2] }; // parse recursively this.parseInline(_node2); return [_node2, resultWeak[2].length + 2]; } return; } function getTag(emphasizeType) { switch (emphasizeType) { case EmphasizeType.DOUBLE: return ['<strong><em>', '</em></strong>']; case EmphasizeType.STRONG: return ['<strong>', '</strong>']; default: return ['<em>', '</em>']; } } function render() { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var node = arguments.length > 1 ? arguments[1] : undefined; var tag = getTag(node.emphasizeType); return "".concat(tag[0]).concat(node.rawValue || '').concat(data).concat(tag[1]); } var _default = { parse: parse, render: render }; exports["default"] = _default;