aboutsummaryrefslogtreecommitdiff
path: root/lib/html/index.js
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-13 23:29:41 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-13 23:49:31 +0100
commit7b7ce0d563ddc07172b0f241a5c3baf344f256e8 (patch)
tree43f5fddf920d47e281a30139bde99da5a689d667 /lib/html/index.js
parente04d054a1b414e843fa6d6f5ee1ae75c0df533b1 (diff)
Collapse similar HTML elements
Diffstat (limited to 'lib/html/index.js')
-rw-r--r--lib/html/index.js38
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;