UNPKG

uparser

Version:
44 lines (33 loc) 1.42 kB
var uparser = (function (exports) { 'use strict'; var attr = /([^\s\\>"'=]+)\s*=\s*(['"]?)$/; var empty = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i; var node = /<[a-z][^>]+$/i; var notNode = />[^<>]*$/; var selfClosing = /<([a-z]+[a-z0-9:._-]*)([^>]*?)(\/>)/ig; var trimEnd = /\s+$/; var isNode = function isNode(template, i) { return 0 < i-- && (node.test(template[i]) || !notNode.test(template[i]) && isNode(template, i)); }; var regular = function regular(original, name, extra) { return empty.test(name) ? original : "<".concat(name).concat(extra.replace(trimEnd, ''), "></").concat(name, ">"); }; var index = (function (template, prefix, svg) { var text = []; var length = template.length; var _loop = function _loop(i) { var chunk = template[i - 1]; text.push(attr.test(chunk) && isNode(template, i) ? chunk.replace(attr, function (_, $1, $2) { return "".concat(prefix).concat(i - 1, "=").concat($2 || '"').concat($1).concat($2 ? '' : '"'); }) : "".concat(chunk, "<!--").concat(prefix).concat(i - 1, "-->")); }; for (var i = 1; i < length; i++) { _loop(i); } text.push(template[length - 1]); var output = text.join('').trim(); return svg ? output : output.replace(selfClosing, regular); }); exports.default = index; return exports; }({}).default);