mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
* add prettierignore * switch to eslint:recommended + eslint-config-prettier * fix eslint violations * remove more .jshintrc files * better conditional structure * add prettier and update prettier ignore * add precommit hook to run prettier * add lint check to precommit and format check to ci * format all the things * add generated files * let npm do it's thing with package.json
45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
module.exports = function(node) {
|
|
var nextId = 0;
|
|
|
|
var code = "";
|
|
|
|
function codegenEl(node, level) {
|
|
var varName = level === 0 ? "root" : `node${nextId++}`;
|
|
|
|
code += `var ${varName} = document.createElement(${JSON.stringify(
|
|
node.nodeName
|
|
)})\n`;
|
|
|
|
var attributes = node.attributes;
|
|
|
|
for (var i = 0; i < attributes.length; i++) {
|
|
var attr = attributes[i];
|
|
code += `${varName}.setAttribute(${JSON.stringify(
|
|
attr.name
|
|
)}, ${JSON.stringify(attr.value)})\n`;
|
|
}
|
|
|
|
var curChild = node.firstChild;
|
|
while (curChild) {
|
|
if (curChild.nodeType === 1) {
|
|
var childVarName = codegenEl(curChild, level + 1);
|
|
code += `${varName}.appendChild(${childVarName})\n`;
|
|
} else if (curChild.nodeType === 3) {
|
|
code += `${varName}.appendChild(document.createTextNode(${JSON.stringify(
|
|
curChild.nodeValue
|
|
)}))\n`;
|
|
}
|
|
|
|
curChild = curChild.nextSibling;
|
|
}
|
|
|
|
return varName;
|
|
}
|
|
|
|
codegenEl(node, 0);
|
|
|
|
code += "\nreturn root;\n";
|
|
|
|
return code;
|
|
};
|