UNPKG

@connectv/marked

Version:
77 lines 3.89 kB
"use strict"; 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