js-markdown
Version:
A markdown language js compiler.
73 lines (61 loc) • 1.99 kB
JavaScript
/**
* 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 ######
*
*/
;
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;