diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-13 23:29:41 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-13 23:49:31 +0100 |
| commit | 7b7ce0d563ddc07172b0f241a5c3baf344f256e8 (patch) | |
| tree | 43f5fddf920d47e281a30139bde99da5a689d667 /lib/html/index.js | |
| parent | e04d054a1b414e843fa6d6f5ee1ae75c0df533b1 (diff) | |
Collapse similar HTML elements
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; |
