UNPKG

xhtml2pug

Version:
519 lines (493 loc) 22.7 kB
import {encode as $kbbYs$encode} from "html-entities"; import $kbbYs$hyntaxlibconstructtree from "hyntax/lib/construct-tree"; import $kbbYs$hyntaxlibtokenize from "hyntax/lib/tokenize"; import {parse as $kbbYs$parse} from "@vue/compiler-dom"; function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } var $09a65d7ba376d391$exports = {}; $parcel$export($09a65d7ba376d391$exports, "convert", () => $09a65d7ba376d391$export$9c68d69a4c5bbcf9, (v) => $09a65d7ba376d391$export$9c68d69a4c5bbcf9 = v); var $00a4bd21c189f400$export$85c928794f8d04d4 = { Doctype: 0, Tag: 1, Text: 2, Script: 3, Style: 4, Comment: 5 }; var $8094157b9d54973a$var$findTag = function(nodes, tagName) { return nodes.find(function(node) { if (node.node === (0, $00a4bd21c189f400$export$85c928794f8d04d4).Tag && node.name === tagName) return node; if (node.node === (0, $00a4bd21c189f400$export$85c928794f8d04d4).Tag && node.children) return $8094157b9d54973a$var$findTag(node.children, tagName); return undefined; }); }; var $8094157b9d54973a$var$createTag = function(name, children) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Tag, name: name, children: children, attrs: [] }; }; var $8094157b9d54973a$export$15f1e0b2d8c15007 = function(nodes) { var html = $8094157b9d54973a$var$findTag(nodes, "html"); var body = $8094157b9d54973a$var$findTag(nodes, "body"); var head = $8094157b9d54973a$var$findTag(nodes, "head"); if (html) return nodes; if (!body && head) return [ $8094157b9d54973a$var$createTag("html", [ head ]) ]; if (body && !head) return [ $8094157b9d54973a$var$createTag("html", [ body ]) ]; if (!html && body && head) return [ $8094157b9d54973a$var$createTag("html", [ head, body ]) ]; return [ $8094157b9d54973a$var$createTag("html", [ $8094157b9d54973a$var$createTag("body", nodes) ]) ]; }; var $d0384cb133070227$exports = {}; $parcel$export($d0384cb133070227$exports, "compileAst", () => $d0384cb133070227$export$85f0a661b59e6ae5, (v) => $d0384cb133070227$export$85f0a661b59e6ae5 = v); var $58ca0532e5af11ea$exports = {}; $parcel$export($58ca0532e5af11ea$exports, "wrapAttrs", () => $58ca0532e5af11ea$export$fc18073465ce7ae5, (v) => $58ca0532e5af11ea$export$fc18073465ce7ae5 = v); $parcel$export($58ca0532e5af11ea$exports, "formatAttrsForTag", () => $58ca0532e5af11ea$export$25212e79da653bac, (v) => $58ca0532e5af11ea$export$25212e79da653bac = v); $parcel$export($58ca0532e5af11ea$exports, "compileAttrs", () => $58ca0532e5af11ea$export$ec87509295a42e9b, (v) => $58ca0532e5af11ea$export$ec87509295a42e9b = v); var $58ca0532e5af11ea$var$__assign = undefined && undefined.__assign || function() { $58ca0532e5af11ea$var$__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 $58ca0532e5af11ea$var$__assign.apply(this, arguments); }; var $58ca0532e5af11ea$export$fc18073465ce7ae5 = function(str) { return str ? "(".concat(str, ")") : ""; }; var $58ca0532e5af11ea$var$allowValue = function(str) { return !/[{}_]/.test(str); }; var $58ca0532e5af11ea$export$25212e79da653bac = function(attrs, options) { return attrs.reduce(function(acc, _a) { var key = _a.key, value = _a.value; if (key === "id" && value && $58ca0532e5af11ea$var$allowValue(value)) return $58ca0532e5af11ea$var$__assign($58ca0532e5af11ea$var$__assign({}, acc), { id: value }); if (key === "class" && value && $58ca0532e5af11ea$var$allowValue(value) && !options.inlineCSS) return $58ca0532e5af11ea$var$__assign($58ca0532e5af11ea$var$__assign({}, acc), { className: value }); return $58ca0532e5af11ea$var$__assign($58ca0532e5af11ea$var$__assign({}, acc), { attrs: acc.attrs.concat({ key: key, value: value }) }); }, { className: "", id: "", attrs: [] }); }; var $58ca0532e5af11ea$var$wrapInQuotes = function(str, options) { if (str === undefined) return null; if (/\n/.test(str)) return "`".concat(str, "`"); if (options.doubleQuotes && str.includes('"')) return "'".concat(str, "'"); if (options.doubleQuotes && !str.includes('"')) return '"'.concat(str, '"'); return "'".concat(str, "'"); }; var $58ca0532e5af11ea$export$ec87509295a42e9b = function(attrs, options) { return attrs.map(function(_a) { var key = _a.key, value = _a.value; return [ key, value && $58ca0532e5af11ea$var$wrapInQuotes(value, options) ].filter(function(str) { return str != null; }).join("="); }).join(options.attrSep); }; var $d0384cb133070227$var$__assign = undefined && undefined.__assign || function() { $d0384cb133070227$var$__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 $d0384cb133070227$var$__assign.apply(this, arguments); }; var $d0384cb133070227$var$__spreadArray = undefined && undefined.__spreadArray || function(to, from, pack) { if (pack || arguments.length === 2) { for(var i = 0, l = from.length, ar; i < l; i++)if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; var $d0384cb133070227$var$getFirstText = function(nodes) { var textNode = nodes[0]; if (textNode && textNode.node === (0, $00a4bd21c189f400$export$85c928794f8d04d4).Text) return textNode; return null; }; var $d0384cb133070227$var$getNodesWithoutText = function(nodes) { var textNode = nodes[0], other = nodes.slice(1); if (textNode && textNode.node === (0, $00a4bd21c189f400$export$85c928794f8d04d4).Text) return other; return nodes; }; var $d0384cb133070227$var$getIndent = function(_a) { var level = _a.level, symbol = _a.symbol; return symbol.repeat(level); }; var $d0384cb133070227$var$wrapPreformattedText = function(str1, options) { return str1 ? ".\n" + str1.trim().split("\n").map(function(str) { return $d0384cb133070227$var$getIndent(options) + str.trimStart(); }).join("\n") : ""; }; var $d0384cb133070227$var$compileDoctype = function(_, options) { return "".concat($d0384cb133070227$var$getIndent(options), "doctype html"); }; var $d0384cb133070227$var$compileText = function(node, options) { var resultText = node.value.trimEnd().split("\n").filter(Boolean).map(function(str) { return "".concat($d0384cb133070227$var$getIndent(options), "| ").concat(str.trimStart()); }).join("\n"); return options.encode ? (0, $kbbYs$encode)(resultText) : resultText; }; var $d0384cb133070227$var$compileSingleLineText = function(node, options) { return options.encode ? (0, $kbbYs$encode)(node.value) : node.value; }; var $d0384cb133070227$var$compileComment = function(node, options) { var start = $d0384cb133070227$var$getIndent(options) + "//"; var clearedValue = node.value.trim(); if (!clearedValue.includes("\n")) return start + " " + clearedValue; return start + "\n" + clearedValue.split("\n").map(function(str) { return "".concat($d0384cb133070227$var$getIndent($d0384cb133070227$var$__assign($d0384cb133070227$var$__assign({}, options), { level: options.level + 1 }))).concat(str.trim()); }).join("\n"); }; var $d0384cb133070227$var$compileScript = function(node, options) { return "".concat($d0384cb133070227$var$getIndent(options), "script").concat((0, $58ca0532e5af11ea$exports.wrapAttrs)((0, $58ca0532e5af11ea$exports.compileAttrs)(node.attrs, options))).concat($d0384cb133070227$var$wrapPreformattedText(node.value, $d0384cb133070227$var$__assign($d0384cb133070227$var$__assign({}, options), { level: options.level + 1 }))); }; var $d0384cb133070227$var$compileStyle = function(node, options) { return "".concat($d0384cb133070227$var$getIndent(options), "style").concat((0, $58ca0532e5af11ea$exports.wrapAttrs)((0, $58ca0532e5af11ea$exports.compileAttrs)(node.attrs, options))).concat($d0384cb133070227$var$wrapPreformattedText(node.value, $d0384cb133070227$var$__assign($d0384cb133070227$var$__assign({}, options), { level: options.level + 1 }))); }; var $d0384cb133070227$var$compileTag = function(node, options) { var _a = (0, $58ca0532e5af11ea$exports.formatAttrsForTag)(node.attrs, options), attrs = _a.attrs, className = _a.className, id = _a.id; var tag = ""; if (options.classesAtEnd) tag = [ $d0384cb133070227$var$getIndent(options), node.name, id ? "#".concat(id) : "", (0, $58ca0532e5af11ea$exports.wrapAttrs)((0, $58ca0532e5af11ea$exports.compileAttrs)(attrs, options)), className ? "." + className.split(" ").join(".") : "", ].filter(Boolean).join(""); else tag = [ $d0384cb133070227$var$getIndent(options), (id || className) && node.name === "div" ? "" : node.name, id ? "#".concat(id) : "", className ? "." + className.split(" ").join(".") : "", (0, $58ca0532e5af11ea$exports.wrapAttrs)((0, $58ca0532e5af11ea$exports.compileAttrs)(attrs, options)), ].filter(Boolean).join(""); var textNode = $d0384cb133070227$var$getFirstText(node.children); if (!textNode) return tag; var resultText = textNode.value.includes("\n") ? "\n" + $d0384cb133070227$var$compileText(textNode, $d0384cb133070227$var$__assign($d0384cb133070227$var$__assign({}, options), { level: options.level + 1 })) : " " + $d0384cb133070227$var$compileSingleLineText(textNode, options); return "".concat(tag).concat(resultText); }; function $d0384cb133070227$export$85f0a661b59e6ae5(ast1, options) { var deepCompile = function(ast, level) { if (level === void 0) level = 0; return ast.reduce(function(acc, node) { var newOptions = $d0384cb133070227$var$__assign({ level: level }, options); switch(node.node){ case (0, $00a4bd21c189f400$export$85c928794f8d04d4).Doctype: return acc.concat($d0384cb133070227$var$compileDoctype(node, newOptions)); case (0, $00a4bd21c189f400$export$85c928794f8d04d4).Script: return acc.concat($d0384cb133070227$var$compileScript(node, newOptions)); case (0, $00a4bd21c189f400$export$85c928794f8d04d4).Style: return acc.concat($d0384cb133070227$var$compileStyle(node, newOptions)); case (0, $00a4bd21c189f400$export$85c928794f8d04d4).Text: return acc.concat($d0384cb133070227$var$compileText(node, newOptions)); case (0, $00a4bd21c189f400$export$85c928794f8d04d4).Comment: return acc.concat($d0384cb133070227$var$compileComment(node, newOptions)); case (0, $00a4bd21c189f400$export$85c928794f8d04d4).Tag: return acc.concat.apply(acc, $d0384cb133070227$var$__spreadArray([ $d0384cb133070227$var$compileTag(node, newOptions) ], deepCompile($d0384cb133070227$var$getNodesWithoutText(node.children), level + 1), false)); default: return acc; } }, []); }; return deepCompile(ast1).join("\n") + "\n"; } var $d10d982ddf2a6e42$var$isTag = function(child) { return child.nodeType === "tag"; }; var $d10d982ddf2a6e42$var$isDoctype = function(child) { return child.nodeType === "doctype"; }; var $d10d982ddf2a6e42$var$isText = function(child) { return child.nodeType === "text"; }; var $d10d982ddf2a6e42$var$isComment = function(child) { return child.nodeType === "comment"; }; var $d10d982ddf2a6e42$var$isScript = function(child) { return child.nodeType === "script"; }; var $d10d982ddf2a6e42$var$isStyle = function(child) { return child.nodeType === "style"; }; var $d10d982ddf2a6e42$var$parseAttrs = function(attrs) { if (attrs === void 0) attrs = []; return attrs.map(function(attr) { var _a, _b, _c; if (!attr.key) return { key: (_b = (_a = attr.value) === null || _a === void 0 ? void 0 : _a.content) !== null && _b !== void 0 ? _b : "" }; return { key: attr.key.content, value: (_c = attr.value) === null || _c === void 0 ? void 0 : _c.content }; }); }; var $d10d982ddf2a6e42$var$parseText = function(child) { return child.content.value.content.trim() ? { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Text, value: child.content.value.content } : null; }; var $d10d982ddf2a6e42$var$parseComment = function(child) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Comment, value: child.content.value.content }; }; var $d10d982ddf2a6e42$var$parseDoctype = function(child) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Doctype, attrs: $d10d982ddf2a6e42$var$parseAttrs(child.content.attributes) }; }; var $d10d982ddf2a6e42$var$parseScript = function(child) { var _a, _b; return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Script, attrs: $d10d982ddf2a6e42$var$parseAttrs(child.content.attributes), value: (_b = (_a = child.content.value) === null || _a === void 0 ? void 0 : _a.content) !== null && _b !== void 0 ? _b : "" }; }; var $d10d982ddf2a6e42$var$parseStyle = function(child) { var _a, _b; return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Style, attrs: $d10d982ddf2a6e42$var$parseAttrs(child.content.attributes), value: (_b = (_a = child.content.value) === null || _a === void 0 ? void 0 : _a.content) !== null && _b !== void 0 ? _b : "" }; }; var $d10d982ddf2a6e42$var$parseTag = function(child, children) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Tag, attrs: $d10d982ddf2a6e42$var$parseAttrs(child.content.attributes), name: child.content.name, children: children }; }; function $d10d982ddf2a6e42$export$538fc22499890e84(ast) { var deepConvert = function(children) { return children.reduce(function(acc, child) { var _a; if ($d10d982ddf2a6e42$var$isText(child)) { var textNode = $d10d982ddf2a6e42$var$parseText(child); return textNode ? acc.concat(textNode) : acc; } if ($d10d982ddf2a6e42$var$isComment(child)) return acc.concat($d10d982ddf2a6e42$var$parseComment(child)); if ($d10d982ddf2a6e42$var$isDoctype(child)) return acc.concat($d10d982ddf2a6e42$var$parseDoctype(child)); if ($d10d982ddf2a6e42$var$isScript(child)) return acc.concat($d10d982ddf2a6e42$var$parseScript(child)); if ($d10d982ddf2a6e42$var$isStyle(child)) return acc.concat($d10d982ddf2a6e42$var$parseStyle(child)); /* istanbul ignore else */ if ($d10d982ddf2a6e42$var$isTag(child)) { var children_1 = deepConvert((_a = child.content.children) !== null && _a !== void 0 ? _a : []); return acc.concat($d10d982ddf2a6e42$var$parseTag(child, children_1)); } /* istanbul ignore next */ return acc; }, []); }; return deepConvert(ast.content.children); } function $d10d982ddf2a6e42$export$16f39c815cb63b03(html) { return $d10d982ddf2a6e42$export$538fc22499890e84((0, $kbbYs$hyntaxlibconstructtree)((0, $kbbYs$hyntaxlibtokenize)(html).tokens).ast); } var $0bdb9fe31cc037ca$var$NodeTypes = { ELEMENT: 1, TEXT: 2, COMMENT: 3, ATTRIBUTE: 6, DIRECTIVE: 7, INTERPOLATION: 5 }; var $0bdb9fe31cc037ca$var$isElement = function(child) { return child.type === $0bdb9fe31cc037ca$var$NodeTypes.ELEMENT; }; var $0bdb9fe31cc037ca$var$isText = function(child) { return child.type === $0bdb9fe31cc037ca$var$NodeTypes.TEXT; }; var $0bdb9fe31cc037ca$var$isComment = function(child) { return child.type === $0bdb9fe31cc037ca$var$NodeTypes.COMMENT; }; var $0bdb9fe31cc037ca$var$isAttr = function(attr) { return attr.type === $0bdb9fe31cc037ca$var$NodeTypes.ATTRIBUTE; }; var $0bdb9fe31cc037ca$var$isDirective = function(attr) { return attr.type === $0bdb9fe31cc037ca$var$NodeTypes.DIRECTIVE; }; var $0bdb9fe31cc037ca$var$isInterpolation = function(child) { return child.type === $0bdb9fe31cc037ca$var$NodeTypes.INTERPOLATION; }; var $0bdb9fe31cc037ca$export$e1a9355cfd8f6c64 = function(attrs) { return attrs.map(function(attr) { var _a; if ($0bdb9fe31cc037ca$var$isAttr(attr)) return { key: attr.name, value: (_a = attr.value) === null || _a === void 0 ? void 0 : _a.content }; var firstEqual = attr.loc.source.indexOf("="); if (firstEqual === -1) return { key: attr.loc.source }; var _b = [ attr.loc.source.slice(0, firstEqual), attr.loc.source.slice(firstEqual + 1), ], key = _b[0], value = _b[1]; return { key: key, value: value.replace(/^"|"$/g, "") }; }); }; var $0bdb9fe31cc037ca$export$ec3f164301cf7795 = function(child) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Text, value: child.content.trim() }; }; var $0bdb9fe31cc037ca$export$c25837ef67955388 = function(child) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Comment, value: child.content.trim() }; }; var $0bdb9fe31cc037ca$export$99bca2eadc127ad2 = function(child, children) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Tag, name: child.tag, attrs: $0bdb9fe31cc037ca$export$e1a9355cfd8f6c64(child.props), children: children }; }; var $0bdb9fe31cc037ca$var$parseScript = function(child) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Script, attrs: $0bdb9fe31cc037ca$export$e1a9355cfd8f6c64(child.props), value: child.children.map(function(el) { return el.content; }).join("\n").trim() }; }; var $0bdb9fe31cc037ca$var$parseStyle = function(child) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Style, attrs: $0bdb9fe31cc037ca$export$e1a9355cfd8f6c64(child.props), value: child.children.map(function(el) { return el.content; }).join("\n").trim() }; }; var $0bdb9fe31cc037ca$var$parseInterpolation = function(child) { return { node: (0, $00a4bd21c189f400$export$85c928794f8d04d4).Text, value: child.loc.source }; }; function $0bdb9fe31cc037ca$export$78c9e747eb0247af(ast) { var deepConvert = function(children) { return children.reduce(function(acc, child) { if ($0bdb9fe31cc037ca$var$isText(child)) return acc.concat($0bdb9fe31cc037ca$export$ec3f164301cf7795(child)); if ($0bdb9fe31cc037ca$var$isInterpolation(child)) return acc.concat($0bdb9fe31cc037ca$var$parseInterpolation(child)); if ($0bdb9fe31cc037ca$var$isComment(child)) return acc.concat($0bdb9fe31cc037ca$export$c25837ef67955388(child)); if ($0bdb9fe31cc037ca$var$isElement(child) && child.tag === "script") return acc.concat($0bdb9fe31cc037ca$var$parseScript(child)); if ($0bdb9fe31cc037ca$var$isElement(child) && child.tag === "style") return acc.concat($0bdb9fe31cc037ca$var$parseStyle(child)); /* istanbul ignore else */ if ($0bdb9fe31cc037ca$var$isElement(child)) { var children_1 = deepConvert(child.children); return acc.concat($0bdb9fe31cc037ca$export$99bca2eadc127ad2(child, children_1)); } console.error(child); return acc; }, []); }; return deepConvert(ast.children); } function $0bdb9fe31cc037ca$export$6803692198d357dd(html) { return $0bdb9fe31cc037ca$export$78c9e747eb0247af((0, $kbbYs$parse)(html)); } var $09a65d7ba376d391$var$__assign = undefined && undefined.__assign || function() { $09a65d7ba376d391$var$__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 $09a65d7ba376d391$var$__assign.apply(this, arguments); }; var $09a65d7ba376d391$var$__rest = undefined && undefined.__rest || function(s, e) { var t = {}; for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") { for(var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var $09a65d7ba376d391$var$setupDefaultOptions = function(_a) { var _b = _a.attrComma, attrComma = _b === void 0 ? true : _b, options = $09a65d7ba376d391$var$__rest(_a, [ "attrComma" ]); return $09a65d7ba376d391$var$__assign({ attrSep: attrComma ? ", " : " ", bodyLess: false, doubleQuotes: true, encode: true, inlineCSS: false, symbol: " ", parser: "html", classesAtEnd: false }, options); }; function $09a65d7ba376d391$export$9c68d69a4c5bbcf9(html, options) { if (options === void 0) options = {}; var definedOptions = $09a65d7ba376d391$var$setupDefaultOptions(options); var convertedAst = definedOptions.parser === "html" ? (0, $d10d982ddf2a6e42$export$16f39c815cb63b03)(html) : (0, $0bdb9fe31cc037ca$export$6803692198d357dd)(html); return (0, $d0384cb133070227$exports.compileAst)(options.bodyLess ? convertedAst : (0, $8094157b9d54973a$export$15f1e0b2d8c15007)(convertedAst), definedOptions); } export {$09a65d7ba376d391$export$9c68d69a4c5bbcf9 as convert, $09a65d7ba376d391$exports as default}; //# sourceMappingURL=module.js.map