Michael Rawlings 0f5e639775 Format + lint (#1016)
* 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
2018-03-09 10:02:11 -08:00

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;
};