js-markdown
Version:
A markdown language js compiler.
70 lines (57 loc) • 1.71 kB
JavaScript
/**
* match a series of headers of setext format
*
* syntax like this:
*
* header 1 ( <h1></h1> )
* ======================
*
* or
*
* header 2 ( <h2></h2> )
* ----------------------
*
*/
;
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;