You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
984 B
41 lines
984 B
var ast = require("./ast");
|
|
|
|
exports.freshElement = ast.freshElement;
|
|
exports.nonFreshElement = ast.nonFreshElement;
|
|
exports.elementWithTag = ast.elementWithTag;
|
|
exports.text = ast.text;
|
|
exports.forceWrite = ast.forceWrite;
|
|
|
|
exports.simplify = require("./simplify");
|
|
|
|
function write(writer, nodes) {
|
|
nodes.forEach(function(node) {
|
|
writeNode(writer, node);
|
|
});
|
|
}
|
|
|
|
function writeNode(writer, node) {
|
|
toStrings[node.type](writer, node);
|
|
}
|
|
|
|
var toStrings = {
|
|
element: generateElementString,
|
|
text: generateTextString,
|
|
forceWrite: function() { }
|
|
};
|
|
|
|
function generateElementString(writer, node) {
|
|
if (ast.isVoidElement(node)) {
|
|
writer.selfClosing(node.tag.tagName, node.tag.attributes);
|
|
} else {
|
|
writer.open(node.tag.tagName, node.tag.attributes);
|
|
write(writer, node.children);
|
|
writer.close(node.tag.tagName);
|
|
}
|
|
}
|
|
|
|
function generateTextString(writer, node) {
|
|
writer.text(node.value);
|
|
}
|
|
|
|
exports.write = write;
|
|
|