js-markdown
Version:
A markdown language js compiler.
71 lines (58 loc) • 1.54 kB
JavaScript
/**
* match a image
*
* (1) basic syntax like this:
*
* 
*
* (2) use a reference define
*
* ![alt text][reference define]
* [reference define]: url/to/image "optional title attribute"
*
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
function parse(str, children, renderTree) {
var result = str.match(/^!\[(.*?)\][ \t]*\([ \t]*([^")]*?)(?:[ \t]+(["'])(.*?)\3)?[ \t]*\)/); // basic usage
if (result) {
var node = {
type: 'Image',
alt: result[1],
src: result[2]
};
if (result[4]) {
node.title = result[4];
}
return [node, result[0].length];
}
result = str.match(/^!\[(.*?)\][ \t]*\[(.*?)\]/); // use reference define
if (result) {
var ref = renderTree.referenceDefine[result[2].toLowerCase()];
if (!ref) {
return;
}
var _node = {
type: 'Image',
alt: result[1],
src: ref.href
};
if (ref.title) {
_node.title = ref.title;
}
return [_node, result[0].length];
}
}
function render() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var node = arguments.length > 1 ? arguments[1] : undefined;
return "<img".concat(node.alt ? " alt=\"".concat(node.alt, "\"") : '').concat(node.title ? " title=\"".concat(node.title, "\"") : '', " src=\"").concat(node.src, "\"/>");
}
var _default = {
parse: parse,
render: render
};
exports["default"] = _default;