UNPKG

js-markdown

Version:
93 lines (78 loc) 2.38 kB
/** * match text and paragraph * * If one string does not match any syntax, it will be a text or paragraph. * String will render as a text preferentially. * Adjacent text will combine as a paragraph. * Only if parent is render tree root node, string will render as a paragraph. * */ 'use strict'; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _Valid = _interopRequireDefault(require("../../utils/Valid")); var _Str = _interopRequireDefault(require("../../utils/Str")); // get prev node in render tree function getPrev(renderTree) { if (!renderTree || !renderTree.children || renderTree.children.length < 1 || !renderTree.children[renderTree.children.length - 1]) { return; } return renderTree.children[renderTree.children.length - 1]; } function parse(line, index, lines, renderTree) { var prev = getPrev(renderTree), isBlankLine = _Valid["default"].isBlank(line); if (prev) { if (prev.type === 'Text') { // multi Text line will be a Paragraph if (isBlankLine) { prev.type = 'Paragraph'; return [{ type: 'BlankLine', rawValue: '' }, index]; } else { prev.type = 'Paragraph'; prev.rawValue += '\n' + line; return [null, index]; } } if (isBlankLine && prev.type === 'BlankLine') { return [null, index]; } if (!isBlankLine && prev.type === 'Paragraph') { // append to prev Paragraph prev.rawValue += '\n' + line; return [null, index]; } } if (isBlankLine) { return [{ type: 'BlankLine', rawValue: '' }, index]; } // render as a single line text when parent is a list // if (renderTree && renderTree.type === 'ListItem') { // return [{ // type: 'Text', // rawValue: line // }, index]; // } return [{ type: 'Paragraph', rawValue: line }, index]; } function render() { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var node = arguments.length > 1 ? arguments[1] : undefined; return "<p>".concat(node.rawValue || '').concat(_Str["default"].trim(data, ' \n'), "</p>"); } var _default = { parse: parse, render: render }; exports["default"] = _default;