xhtml2pug
Version:
library for convert html2pug
519 lines (493 loc) • 22.7 kB
JavaScript
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