UNPKG

js-markdown

Version:
70 lines (57 loc) 1.71 kB
/** * match a series of headers of setext format * * syntax like this: * * header 1 ( <h1></h1> ) * ====================== * * or * * header 2 ( <h2></h2> ) * ---------------------- * */ '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) { // blank line or last line if (_Valid["default"].isBlank(line) || index >= lines.length - 1) { return; } var nextLine = lines[index + 1], result = nextLine.match(/^([-=])\1\1+(?:\n|$)/); if (!result) { return; } return [{ type: 'SetextHeader', level: result[1] === '=' ? 1 : 2, rawValue: line }, index + 1]; } 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;