@connectv/marked
Version:
component-based markdown renderer
77 lines • 3.89 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var marked_1 = require("marked");
var InlineProcessor = /** @class */ (function () {
function InlineProcessor(tokens, renderer, options) {
this.renderer = renderer;
this.options = options;
this.lexer = new marked_1.InlineLexer(tokens.links);
}
InlineProcessor.prototype.process = function (block) {
var renderer = this.renderer;
return this.buildFrom(renderer.create("span", { _innerHTML: this.lexer.output(block) }));
};
InlineProcessor.prototype.children = function (src) {
var l = [];
src.childNodes.forEach(function (node) { return l.push(node); });
return l;
};
InlineProcessor.prototype.buildFrom = function (src) {
var _this = this;
var renderer = this.renderer;
var res = renderer.create("fragment", null);
this.children(src).forEach(function (node) {
if (node instanceof Text && _this.options.Text) {
renderer.render(renderer.create(_this.options.Text, null, node.textContent /* istanbul ignore next */ || ''))
.on(res);
}
else if (node instanceof HTMLAnchorElement && _this.options.Link) {
var options = {};
if (node.hasAttribute('href'))
options['href'] = node.getAttribute('href') /* istanbul ignore next */ || '';
if (node.hasAttribute('title'))
options['title'] = node.getAttribute('title') /* istanbul ignore next */ || '';
renderer.render(renderer.create(_this.options.Link, __assign({}, options), _this.buildFrom(node))).on(res);
}
else if (node instanceof HTMLElement && node.tagName === 'EM' && _this.options.Em) {
renderer.render(renderer.create(_this.options.Em, null, _this.buildFrom(node))).on(res);
}
else if (node instanceof HTMLElement && node.tagName === 'STRONG' && _this.options.Strong) {
renderer.render(renderer.create(_this.options.Strong, null, _this.buildFrom(node))).on(res);
}
else if (node instanceof HTMLElement && node.tagName === 'DEL' && _this.options.Del) {
renderer.render(renderer.create(_this.options.Del, null, _this.buildFrom(node))).on(res);
}
else if (node instanceof HTMLElement && node.tagName === 'CODE' && _this.options.CodeSpan) {
renderer.render(renderer.create(_this.options.CodeSpan, null, _this.buildFrom(node))).on(res);
}
else if (node instanceof HTMLImageElement && _this.options.Image) {
var options = {};
if (node.hasAttribute('src'))
options['src'] = node.getAttribute('src') /* istanbul ignore next */ || '';
if (node.hasAttribute('title'))
options['title'] = node.getAttribute('title') /* istanbul ignore next */ || '';
if (node.hasAttribute('alt'))
options['alt'] = node.getAttribute('alt') /* istanbul ignore next */ || '';
renderer.render(renderer.create(_this.options.Image, __assign({}, options))).on(res);
}
else
renderer.render(node).on(res);
});
return res;
};
return InlineProcessor;
}());
exports.InlineProcessor = InlineProcessor;
//# sourceMappingURL=inline.js.map