diff options
Diffstat (limited to 'lib/html/index.js')
| -rw-r--r-- | lib/html/index.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/html/index.js b/lib/html/index.js index 41d348f..f74a98f 100644 --- a/lib/html/index.js +++ b/lib/html/index.js @@ -3,7 +3,9 @@ var ast = require("./ast"); exports.fragment = ast.fragment; exports.element = ast.element; exports.elementWithTag = ast.elementWithTag; +exports.selfClosingElement = ast.selfClosingElement; exports.text = ast.text; +exports.forceWrite = ast.forceWrite; function pathToNode(path, children) { var result = ast.fragment(children); @@ -15,3 +17,39 @@ function pathToNode(path, children) { exports.pathToNode = pathToNode; exports.simplify = require("./simplify"); + +function write(writer, node) { + toStrings[node.type](writer, node); +} + +var toStrings = { + fragment: generateFragmentString, + element: generateElementString, + selfClosingElement: generateSelfClosingElementString, + text: generateTextString, + forceWrite: function() { } +}; + +function generateFragmentString(writer, node) { + node.children.forEach(function(child) { + write(writer, child); + }); +} + +function generateElementString(writer, node) { + writer.open(node.tag.tagName, node.tag.attributes); + node.children.forEach(function(child) { + write(writer, child); + }); + writer.close(node.tag.tagName); +} + +function generateSelfClosingElementString(writer, node) { + writer.selfClosing(node.tagName, node.attributes); +} + +function generateTextString(writer, node) { + writer.text(node.value); +} + +exports.write = write; |
