xhtml2pug
Version:
library for convert html2pug
520 lines (494 loc) • 22.7 kB
JavaScript
var $8wP6K$htmlentities = require("html-entities");
var $8wP6K$hyntaxlibconstructtree = require("hyntax/lib/construct-tree");
var $8wP6K$hyntaxlibtokenize = require("hyntax/lib/tokenize");
var $8wP6K$vuecompilerdom = require("@vue/compiler-dom");
function $parcel$export(e, n, v, s) {
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
}
function $parcel$interopDefault(a) {
return a && a.__esModule ? a.default : a;
}
$parcel$export(module.exports, "convert", () => $86b6b968d2dbe88f$export$9c68d69a4c5bbcf9, (v) => $86b6b968d2dbe88f$export$9c68d69a4c5bbcf9 = v);
var $0e6b16fffa0a9bc6$export$85c928794f8d04d4 = {
Doctype: 0,
Tag: 1,
Text: 2,
Script: 3,
Style: 4,
Comment: 5
};
var $4ef8b8fe7daf140b$var$findTag = function(nodes, tagName) {
return nodes.find(function(node) {
if (node.node === (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Tag && node.name === tagName) return node;
if (node.node === (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Tag && node.children) return $4ef8b8fe7daf140b$var$findTag(node.children, tagName);
return undefined;
});
};
var $4ef8b8fe7daf140b$var$createTag = function(name, children) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Tag,
name: name,
children: children,
attrs: []
};
};
var $4ef8b8fe7daf140b$export$15f1e0b2d8c15007 = function(nodes) {
var html = $4ef8b8fe7daf140b$var$findTag(nodes, "html");
var body = $4ef8b8fe7daf140b$var$findTag(nodes, "body");
var head = $4ef8b8fe7daf140b$var$findTag(nodes, "head");
if (html) return nodes;
if (!body && head) return [
$4ef8b8fe7daf140b$var$createTag("html", [
head
])
];
if (body && !head) return [
$4ef8b8fe7daf140b$var$createTag("html", [
body
])
];
if (!html && body && head) return [
$4ef8b8fe7daf140b$var$createTag("html", [
head,
body
])
];
return [
$4ef8b8fe7daf140b$var$createTag("html", [
$4ef8b8fe7daf140b$var$createTag("body", nodes)
])
];
};
var $58b850e81b24fb0a$exports = {};
$parcel$export($58b850e81b24fb0a$exports, "compileAst", () => $58b850e81b24fb0a$export$85f0a661b59e6ae5, (v) => $58b850e81b24fb0a$export$85f0a661b59e6ae5 = v);
var $456c9667291840f7$exports = {};
$parcel$export($456c9667291840f7$exports, "wrapAttrs", () => $456c9667291840f7$export$fc18073465ce7ae5, (v) => $456c9667291840f7$export$fc18073465ce7ae5 = v);
$parcel$export($456c9667291840f7$exports, "formatAttrsForTag", () => $456c9667291840f7$export$25212e79da653bac, (v) => $456c9667291840f7$export$25212e79da653bac = v);
$parcel$export($456c9667291840f7$exports, "compileAttrs", () => $456c9667291840f7$export$ec87509295a42e9b, (v) => $456c9667291840f7$export$ec87509295a42e9b = v);
var $456c9667291840f7$var$__assign = undefined && undefined.__assign || function() {
$456c9667291840f7$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 $456c9667291840f7$var$__assign.apply(this, arguments);
};
var $456c9667291840f7$export$fc18073465ce7ae5 = function(str) {
return str ? "(".concat(str, ")") : "";
};
var $456c9667291840f7$var$allowValue = function(str) {
return !/[{}_]/.test(str);
};
var $456c9667291840f7$export$25212e79da653bac = function(attrs, options) {
return attrs.reduce(function(acc, _a) {
var key = _a.key, value = _a.value;
if (key === "id" && value && $456c9667291840f7$var$allowValue(value)) return $456c9667291840f7$var$__assign($456c9667291840f7$var$__assign({}, acc), {
id: value
});
if (key === "class" && value && $456c9667291840f7$var$allowValue(value) && !options.inlineCSS) return $456c9667291840f7$var$__assign($456c9667291840f7$var$__assign({}, acc), {
className: value
});
return $456c9667291840f7$var$__assign($456c9667291840f7$var$__assign({}, acc), {
attrs: acc.attrs.concat({
key: key,
value: value
})
});
}, {
className: "",
id: "",
attrs: []
});
};
var $456c9667291840f7$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 $456c9667291840f7$export$ec87509295a42e9b = function(attrs, options) {
return attrs.map(function(_a) {
var key = _a.key, value = _a.value;
return [
key,
value && $456c9667291840f7$var$wrapInQuotes(value, options)
].filter(function(str) {
return str != null;
}).join("=");
}).join(options.attrSep);
};
var $58b850e81b24fb0a$var$__assign = undefined && undefined.__assign || function() {
$58b850e81b24fb0a$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 $58b850e81b24fb0a$var$__assign.apply(this, arguments);
};
var $58b850e81b24fb0a$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 $58b850e81b24fb0a$var$getFirstText = function(nodes) {
var textNode = nodes[0];
if (textNode && textNode.node === (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Text) return textNode;
return null;
};
var $58b850e81b24fb0a$var$getNodesWithoutText = function(nodes) {
var textNode = nodes[0], other = nodes.slice(1);
if (textNode && textNode.node === (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Text) return other;
return nodes;
};
var $58b850e81b24fb0a$var$getIndent = function(_a) {
var level = _a.level, symbol = _a.symbol;
return symbol.repeat(level);
};
var $58b850e81b24fb0a$var$wrapPreformattedText = function(str1, options) {
return str1 ? ".\n" + str1.trim().split("\n").map(function(str) {
return $58b850e81b24fb0a$var$getIndent(options) + str.trimStart();
}).join("\n") : "";
};
var $58b850e81b24fb0a$var$compileDoctype = function(_, options) {
return "".concat($58b850e81b24fb0a$var$getIndent(options), "doctype html");
};
var $58b850e81b24fb0a$var$compileText = function(node, options) {
var resultText = node.value.trimEnd().split("\n").filter(Boolean).map(function(str) {
return "".concat($58b850e81b24fb0a$var$getIndent(options), "| ").concat(str.trimStart());
}).join("\n");
return options.encode ? (0, $8wP6K$htmlentities.encode)(resultText) : resultText;
};
var $58b850e81b24fb0a$var$compileSingleLineText = function(node, options) {
return options.encode ? (0, $8wP6K$htmlentities.encode)(node.value) : node.value;
};
var $58b850e81b24fb0a$var$compileComment = function(node, options) {
var start = $58b850e81b24fb0a$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($58b850e81b24fb0a$var$getIndent($58b850e81b24fb0a$var$__assign($58b850e81b24fb0a$var$__assign({}, options), {
level: options.level + 1
}))).concat(str.trim());
}).join("\n");
};
var $58b850e81b24fb0a$var$compileScript = function(node, options) {
return "".concat($58b850e81b24fb0a$var$getIndent(options), "script").concat((0, $456c9667291840f7$exports.wrapAttrs)((0, $456c9667291840f7$exports.compileAttrs)(node.attrs, options))).concat($58b850e81b24fb0a$var$wrapPreformattedText(node.value, $58b850e81b24fb0a$var$__assign($58b850e81b24fb0a$var$__assign({}, options), {
level: options.level + 1
})));
};
var $58b850e81b24fb0a$var$compileStyle = function(node, options) {
return "".concat($58b850e81b24fb0a$var$getIndent(options), "style").concat((0, $456c9667291840f7$exports.wrapAttrs)((0, $456c9667291840f7$exports.compileAttrs)(node.attrs, options))).concat($58b850e81b24fb0a$var$wrapPreformattedText(node.value, $58b850e81b24fb0a$var$__assign($58b850e81b24fb0a$var$__assign({}, options), {
level: options.level + 1
})));
};
var $58b850e81b24fb0a$var$compileTag = function(node, options) {
var _a = (0, $456c9667291840f7$exports.formatAttrsForTag)(node.attrs, options), attrs = _a.attrs, className = _a.className, id = _a.id;
var tag = "";
if (options.classesAtEnd) tag = [
$58b850e81b24fb0a$var$getIndent(options),
node.name,
id ? "#".concat(id) : "",
(0, $456c9667291840f7$exports.wrapAttrs)((0, $456c9667291840f7$exports.compileAttrs)(attrs, options)),
className ? "." + className.split(" ").join(".") : "",
].filter(Boolean).join("");
else tag = [
$58b850e81b24fb0a$var$getIndent(options),
(id || className) && node.name === "div" ? "" : node.name,
id ? "#".concat(id) : "",
className ? "." + className.split(" ").join(".") : "",
(0, $456c9667291840f7$exports.wrapAttrs)((0, $456c9667291840f7$exports.compileAttrs)(attrs, options)),
].filter(Boolean).join("");
var textNode = $58b850e81b24fb0a$var$getFirstText(node.children);
if (!textNode) return tag;
var resultText = textNode.value.includes("\n") ? "\n" + $58b850e81b24fb0a$var$compileText(textNode, $58b850e81b24fb0a$var$__assign($58b850e81b24fb0a$var$__assign({}, options), {
level: options.level + 1
})) : " " + $58b850e81b24fb0a$var$compileSingleLineText(textNode, options);
return "".concat(tag).concat(resultText);
};
function $58b850e81b24fb0a$export$85f0a661b59e6ae5(ast1, options) {
var deepCompile = function(ast, level) {
if (level === void 0) level = 0;
return ast.reduce(function(acc, node) {
var newOptions = $58b850e81b24fb0a$var$__assign({
level: level
}, options);
switch(node.node){
case (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Doctype:
return acc.concat($58b850e81b24fb0a$var$compileDoctype(node, newOptions));
case (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Script:
return acc.concat($58b850e81b24fb0a$var$compileScript(node, newOptions));
case (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Style:
return acc.concat($58b850e81b24fb0a$var$compileStyle(node, newOptions));
case (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Text:
return acc.concat($58b850e81b24fb0a$var$compileText(node, newOptions));
case (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Comment:
return acc.concat($58b850e81b24fb0a$var$compileComment(node, newOptions));
case (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Tag:
return acc.concat.apply(acc, $58b850e81b24fb0a$var$__spreadArray([
$58b850e81b24fb0a$var$compileTag(node, newOptions)
], deepCompile($58b850e81b24fb0a$var$getNodesWithoutText(node.children), level + 1), false));
default:
return acc;
}
}, []);
};
return deepCompile(ast1).join("\n") + "\n";
}
var $55670f3adf398d0d$var$isTag = function(child) {
return child.nodeType === "tag";
};
var $55670f3adf398d0d$var$isDoctype = function(child) {
return child.nodeType === "doctype";
};
var $55670f3adf398d0d$var$isText = function(child) {
return child.nodeType === "text";
};
var $55670f3adf398d0d$var$isComment = function(child) {
return child.nodeType === "comment";
};
var $55670f3adf398d0d$var$isScript = function(child) {
return child.nodeType === "script";
};
var $55670f3adf398d0d$var$isStyle = function(child) {
return child.nodeType === "style";
};
var $55670f3adf398d0d$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 $55670f3adf398d0d$var$parseText = function(child) {
return child.content.value.content.trim() ? {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Text,
value: child.content.value.content
} : null;
};
var $55670f3adf398d0d$var$parseComment = function(child) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Comment,
value: child.content.value.content
};
};
var $55670f3adf398d0d$var$parseDoctype = function(child) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Doctype,
attrs: $55670f3adf398d0d$var$parseAttrs(child.content.attributes)
};
};
var $55670f3adf398d0d$var$parseScript = function(child) {
var _a, _b;
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Script,
attrs: $55670f3adf398d0d$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 $55670f3adf398d0d$var$parseStyle = function(child) {
var _a, _b;
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Style,
attrs: $55670f3adf398d0d$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 $55670f3adf398d0d$var$parseTag = function(child, children) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Tag,
attrs: $55670f3adf398d0d$var$parseAttrs(child.content.attributes),
name: child.content.name,
children: children
};
};
function $55670f3adf398d0d$export$538fc22499890e84(ast) {
var deepConvert = function(children) {
return children.reduce(function(acc, child) {
var _a;
if ($55670f3adf398d0d$var$isText(child)) {
var textNode = $55670f3adf398d0d$var$parseText(child);
return textNode ? acc.concat(textNode) : acc;
}
if ($55670f3adf398d0d$var$isComment(child)) return acc.concat($55670f3adf398d0d$var$parseComment(child));
if ($55670f3adf398d0d$var$isDoctype(child)) return acc.concat($55670f3adf398d0d$var$parseDoctype(child));
if ($55670f3adf398d0d$var$isScript(child)) return acc.concat($55670f3adf398d0d$var$parseScript(child));
if ($55670f3adf398d0d$var$isStyle(child)) return acc.concat($55670f3adf398d0d$var$parseStyle(child));
/* istanbul ignore else */ if ($55670f3adf398d0d$var$isTag(child)) {
var children_1 = deepConvert((_a = child.content.children) !== null && _a !== void 0 ? _a : []);
return acc.concat($55670f3adf398d0d$var$parseTag(child, children_1));
}
/* istanbul ignore next */ return acc;
}, []);
};
return deepConvert(ast.content.children);
}
function $55670f3adf398d0d$export$16f39c815cb63b03(html) {
return $55670f3adf398d0d$export$538fc22499890e84((0, ($parcel$interopDefault($8wP6K$hyntaxlibconstructtree)))((0, ($parcel$interopDefault($8wP6K$hyntaxlibtokenize)))(html).tokens).ast);
}
var $a7a9f151104f4a45$var$NodeTypes = {
ELEMENT: 1,
TEXT: 2,
COMMENT: 3,
ATTRIBUTE: 6,
DIRECTIVE: 7,
INTERPOLATION: 5
};
var $a7a9f151104f4a45$var$isElement = function(child) {
return child.type === $a7a9f151104f4a45$var$NodeTypes.ELEMENT;
};
var $a7a9f151104f4a45$var$isText = function(child) {
return child.type === $a7a9f151104f4a45$var$NodeTypes.TEXT;
};
var $a7a9f151104f4a45$var$isComment = function(child) {
return child.type === $a7a9f151104f4a45$var$NodeTypes.COMMENT;
};
var $a7a9f151104f4a45$var$isAttr = function(attr) {
return attr.type === $a7a9f151104f4a45$var$NodeTypes.ATTRIBUTE;
};
var $a7a9f151104f4a45$var$isDirective = function(attr) {
return attr.type === $a7a9f151104f4a45$var$NodeTypes.DIRECTIVE;
};
var $a7a9f151104f4a45$var$isInterpolation = function(child) {
return child.type === $a7a9f151104f4a45$var$NodeTypes.INTERPOLATION;
};
var $a7a9f151104f4a45$export$e1a9355cfd8f6c64 = function(attrs) {
return attrs.map(function(attr) {
var _a;
if ($a7a9f151104f4a45$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 $a7a9f151104f4a45$export$ec3f164301cf7795 = function(child) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Text,
value: child.content.trim()
};
};
var $a7a9f151104f4a45$export$c25837ef67955388 = function(child) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Comment,
value: child.content.trim()
};
};
var $a7a9f151104f4a45$export$99bca2eadc127ad2 = function(child, children) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Tag,
name: child.tag,
attrs: $a7a9f151104f4a45$export$e1a9355cfd8f6c64(child.props),
children: children
};
};
var $a7a9f151104f4a45$var$parseScript = function(child) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Script,
attrs: $a7a9f151104f4a45$export$e1a9355cfd8f6c64(child.props),
value: child.children.map(function(el) {
return el.content;
}).join("\n").trim()
};
};
var $a7a9f151104f4a45$var$parseStyle = function(child) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Style,
attrs: $a7a9f151104f4a45$export$e1a9355cfd8f6c64(child.props),
value: child.children.map(function(el) {
return el.content;
}).join("\n").trim()
};
};
var $a7a9f151104f4a45$var$parseInterpolation = function(child) {
return {
node: (0, $0e6b16fffa0a9bc6$export$85c928794f8d04d4).Text,
value: child.loc.source
};
};
function $a7a9f151104f4a45$export$78c9e747eb0247af(ast) {
var deepConvert = function(children) {
return children.reduce(function(acc, child) {
if ($a7a9f151104f4a45$var$isText(child)) return acc.concat($a7a9f151104f4a45$export$ec3f164301cf7795(child));
if ($a7a9f151104f4a45$var$isInterpolation(child)) return acc.concat($a7a9f151104f4a45$var$parseInterpolation(child));
if ($a7a9f151104f4a45$var$isComment(child)) return acc.concat($a7a9f151104f4a45$export$c25837ef67955388(child));
if ($a7a9f151104f4a45$var$isElement(child) && child.tag === "script") return acc.concat($a7a9f151104f4a45$var$parseScript(child));
if ($a7a9f151104f4a45$var$isElement(child) && child.tag === "style") return acc.concat($a7a9f151104f4a45$var$parseStyle(child));
/* istanbul ignore else */ if ($a7a9f151104f4a45$var$isElement(child)) {
var children_1 = deepConvert(child.children);
return acc.concat($a7a9f151104f4a45$export$99bca2eadc127ad2(child, children_1));
}
console.error(child);
return acc;
}, []);
};
return deepConvert(ast.children);
}
function $a7a9f151104f4a45$export$6803692198d357dd(html) {
return $a7a9f151104f4a45$export$78c9e747eb0247af((0, $8wP6K$vuecompilerdom.parse)(html));
}
var $86b6b968d2dbe88f$var$__assign = undefined && undefined.__assign || function() {
$86b6b968d2dbe88f$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 $86b6b968d2dbe88f$var$__assign.apply(this, arguments);
};
var $86b6b968d2dbe88f$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 $86b6b968d2dbe88f$var$setupDefaultOptions = function(_a) {
var _b = _a.attrComma, attrComma = _b === void 0 ? true : _b, options = $86b6b968d2dbe88f$var$__rest(_a, [
"attrComma"
]);
return $86b6b968d2dbe88f$var$__assign({
attrSep: attrComma ? ", " : " ",
bodyLess: false,
doubleQuotes: true,
encode: true,
inlineCSS: false,
symbol: " ",
parser: "html",
classesAtEnd: false
}, options);
};
function $86b6b968d2dbe88f$export$9c68d69a4c5bbcf9(html, options) {
if (options === void 0) options = {};
var definedOptions = $86b6b968d2dbe88f$var$setupDefaultOptions(options);
var convertedAst = definedOptions.parser === "html" ? (0, $55670f3adf398d0d$export$16f39c815cb63b03)(html) : (0, $a7a9f151104f4a45$export$6803692198d357dd)(html);
return (0, $58b850e81b24fb0a$exports.compileAst)(options.bodyLess ? convertedAst : (0, $4ef8b8fe7daf140b$export$15f1e0b2d8c15007)(convertedAst), definedOptions);
}
//# sourceMappingURL=main.js.map