summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2014-04-10 15:19:24 +0100
committerMichael Williamson <mike@zwobble.org>2014-04-10 15:19:24 +0100
commitd4e6defd5a5f0bb6fd7e248e4e21ca838a461910 (patch)
tree0d5457ee5430076f8b11fa1cacf0bda56dff5f3d
parent0201587bec80aac0c1dcbf12c50ea6d459321585 (diff)
Handle consecutive runs of text
-rw-r--r--lib/html-writer.js13
-rw-r--r--tests/html-writer.tests.js29
2 files changed, 40 insertions, 2 deletions
diff --git a/lib/html-writer.js b/lib/html-writer.js
index c144261..f1761c9 100644
--- a/lib/html-writer.js
+++ b/lib/html-writer.js
@@ -25,6 +25,7 @@ function prettyWriter() {
var indentation = " ";
var stack = [];
var start = true;
+ var inText = false;
var writer = simpleWriter();
@@ -48,7 +49,7 @@ function prettyWriter() {
}
function text(value) {
- indent();
+ startText();
writer.text(value.replace("\n", "\n" + indentation));
}
@@ -58,7 +59,7 @@ function prettyWriter() {
}
function append(html) {
- indent();
+ startText();
writer.append(html.replace("\n", "\n" + indentation));
}
@@ -66,7 +67,15 @@ function prettyWriter() {
return stack.length === 0 || indentedElements[stack[stack.length - 1]];
}
+ function startText() {
+ if (!inText) {
+ indent();
+ inText = true;
+ }
+ }
+
function indent() {
+ inText = false;
if (!start && insideIndentedElement()) {
writer.append("\n");
for (var i = 0; i < indentationLevel; i++) {
diff --git a/tests/html-writer.tests.js b/tests/html-writer.tests.js
index c40cda4..c317544 100644
--- a/tests/html-writer.tests.js
+++ b/tests/html-writer.tests.js
@@ -26,6 +26,17 @@ describe('html-writer', function() {
return assert.equal(writer.asString(), "<ul><li>One</li><li>Two</li></ul>");
});
+ test('indents text if prettyPrint is true', function() {
+ var writer = htmlWriter.writer({prettyPrint: true});
+ writer.open("p");
+ writer.text("One");
+ writer.close("p");
+ writer.open("p");
+ writer.text("Two");
+ writer.close("p");
+ return assert.equal(writer.asString(), "<p>\n One\n</p>\n<p>\n Two\n</p>");
+ });
+
test('indents element if prettyPrint is true', function() {
var writer = htmlWriter.writer({prettyPrint: true});
writer.open("ul");
@@ -59,6 +70,24 @@ describe('html-writer', function() {
return assert.equal(writer.asString(), "<p>\n One\n Two\n</p>");
});
+ test('run of text has only one new line', function() {
+ var writer = htmlWriter.writer({prettyPrint: true});
+ writer.open("p");
+ writer.text("One");
+ writer.text("Two");
+ writer.close("p");
+ return assert.equal(writer.asString(), "<p>\n OneTwo\n</p>");
+ });
+
+ test('run of html has only one new line', function() {
+ var writer = htmlWriter.writer({prettyPrint: true});
+ writer.open("p");
+ writer.append("One");
+ writer.append("Two");
+ writer.close("p");
+ return assert.equal(writer.asString(), "<p>\n OneTwo\n</p>");
+ });
+
test('self closing elements are indented', function() {
var writer = htmlWriter.writer({prettyPrint: true});
writer.open("p");