UNPKG

js-markdown

Version:
73 lines (61 loc) 1.99 kB
/** * match a series of headers of atx format * * syntax like this: * * # header 1 ( <h1></h1> ) * ## header 2 ( <h2></h2> ) * ### header 3 ( <h3></h3> ) * #### header 4 ( <h4></h4> ) * ##### header 5 ( <h5></h5> ) * ###### header 6 ( <h6></h6> ) * * use 1-6 "#" characters at the start of the line, corresponding to header levels 1-6 * * Optionally, you may "close" atx-style headers, like this: * * # This is an H1 # * ## This is an H2 ## * ### This is an H3 ###### * */ '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 _Header = _interopRequireDefault(require("../../utils/Header")); function parse(line, index, lines, renderTree) { var result = line.match(/^(#{1,6})\s*(.*?)\s*(?:#{1,6})?(?:\n|$)/); // if no match or no header content if (!result || _Valid["default"].isBlank(result[2])) { return; } var level = result[1].length, rawValue = result[2]; return [{ type: 'AtxHeader', level: level, rawValue: rawValue + '\n' }, index]; } function render() { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var node = arguments.length > 1 ? arguments[1] : undefined; var renderTree = arguments.length > 2 ? arguments[2] : undefined; var level = node.level, innerHtml = "".concat(node.rawValue || '').concat(data); if (renderTree) { if (!renderTree.headerTree) { renderTree.headerTree = _Header["default"].initRoot(); } _Header["default"].addHeaderNode(renderTree.headerTree, level, innerHtml); } return "<h".concat(level, "><a id=\"").concat(innerHtml, "\" href=\"#").concat(innerHtml, "\"></a>").concat(innerHtml, "</h").concat(level, ">"); } var _default = { parse: parse, render: render }; exports["default"] = _default;