From 0fc88bee80c4adbb13ae7fc4c87f9d993bef9135 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 20 Oct 2015 09:26:37 +0100 Subject: Avoid inserting newlines around inline elements for pretty printing --- NEWS | 4 ++++ lib/writers/html-writer.js | 9 ++++++--- tests/writers/html-writer.tests.js | 13 ++++++++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index b6b5d0f..93c6eb3 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +# 0.3.28 + +* Avoid inserting newlines around inline elements when pretty-printing HTML. + # 0.3.27 * Fix recursive collapsing of elements. diff --git a/lib/writers/html-writer.js b/lib/writers/html-writer.js index 456e894..ee7d49f 100644 --- a/lib/writers/html-writer.js +++ b/lib/writers/html-writer.js @@ -16,7 +16,8 @@ function writer(options) { var indentedElements = { div: true, p: true, - ul: true + ul: true, + li: true }; @@ -30,7 +31,9 @@ function prettyWriter() { var writer = simpleWriter(); function open(tagName, attributes) { - indent(); + if (indentedElements[tagName]) { + indent(); + } stack.push(tagName); writer.open(tagName, attributes); if (indentedElements[tagName]) { @@ -42,8 +45,8 @@ function prettyWriter() { function close(tagName) { if (indentedElements[tagName]) { indentationLevel--; + indent(); } - indent(); stack.pop(); writer.close(tagName); } diff --git a/tests/writers/html-writer.tests.js b/tests/writers/html-writer.tests.js index 5e398e8..41d8839 100644 --- a/tests/writers/html-writer.tests.js +++ b/tests/writers/html-writer.tests.js @@ -47,7 +47,18 @@ describe('html-writer', function() { writer.text("Two"); writer.close("li"); writer.close("ul"); - return assert.equal(writer.asString(), ""); + return assert.equal(writer.asString(), ""); + }); + + test('when prettyPrint is true inner elements do not have new lines', function() { + var writer = htmlWriter.writer({prettyPrint: true}); + writer.open("p"); + writer.text("One"); + writer.open("em"); + writer.text("Two"); + writer.close("em"); + writer.close("p"); + return assert.equal(writer.asString(), "

\n OneTwo\n

"); }); test('indents closing element correctly when nested inside another indented element', function() { -- cgit v1.2.3