summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-11-14 21:02:47 +0000
committerMichael Williamson <mike@zwobble.org>2016-11-14 21:07:30 +0000
commitfba50901e45483a339a16334b628271f770baddf (patch)
tree17c80a2959f8d2bca25fa19e3d890a7862f4dc81
parent443ad6fcbef7734e8b91d8082a0583ce2165c446 (diff)
Use separator during simplification
-rw-r--r--lib/html/simplify.js3
-rw-r--r--test/html/simplify.tests.js16
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/html/simplify.js b/lib/html/simplify.js
index 081c3f8..e05bde2 100644
--- a/lib/html/simplify.js
+++ b/lib/html/simplify.js
@@ -37,6 +37,9 @@ function identity(value) {
function appendChild(children, child) {
var lastChild = children[children.length - 1];
if (child.type === "element" && !child.tag.fresh && lastChild && lastChild.type === "element" && child.tag.matchesElement(lastChild.tag)) {
+ if (child.tag.separator) {
+ appendChild(lastChild.children, ast.text(child.tag.separator));
+ }
child.children.forEach(function(grandChild) {
// Mutation is fine since simplifying elements create a copy of the children.
appendChild(lastChild.children, grandChild);
diff --git a/test/html/simplify.tests.js b/test/html/simplify.tests.js
index 50593ee..cec4dc5 100644
--- a/test/html/simplify.tests.js
+++ b/test/html/simplify.tests.js
@@ -103,6 +103,22 @@ test("empty elements are removed before collapsing", function() {
);
});
+test("when separator is present then separator is prepended to collapsed element", function() {
+ var unseparatedPath = htmlPaths.elements([
+ htmlPaths.element("pre", {}, {fresh: false})
+ ]);
+ var separatedPath = htmlPaths.elements([
+ htmlPaths.element("pre", {}, {fresh: false, separator: "\n"})
+ ]);
+ assert.deepEqual(
+ html.simplify(concat(
+ pathToNodes(unseparatedPath, [text("Hello")]),
+ pathToNodes(separatedPath, [text(" the"), text("re")])
+ )),
+ pathToNodes(unseparatedPath, [text("Hello"), text("\n"), text(" the"), text("re")])
+ );
+});
+
function simplifyNode(node) {
return html.simplify([node]);
}