From e52224fbfe6632248cc58c593efae9a22ba2e622 Mon Sep 17 00:00:00 2001 From: Jonathan Hedley Date: Tue, 24 Jan 2023 13:51:13 +1100 Subject: [PATCH] Pretty-print - don't wrap a blank line after a br --- src/main/java/org/jsoup/nodes/TextNode.java | 2 +- src/test/java/org/jsoup/nodes/ElementTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jsoup/nodes/TextNode.java b/src/main/java/org/jsoup/nodes/TextNode.java index eae444a566..7a7f00a5a5 100644 --- a/src/main/java/org/jsoup/nodes/TextNode.java +++ b/src/main/java/org/jsoup/nodes/TextNode.java @@ -98,7 +98,7 @@ void outerHtmlHead(Appendable accum, int depth, Document.OutputSettings out) thr boolean isBlank = isBlank(); boolean couldSkip = (next instanceof Element && ((Element) next).shouldIndent(out)) // next will indent || (next instanceof TextNode && (((TextNode) next).isBlank())) // next is blank text, from re-parenting - || (prev instanceof Element && ((Element) prev).isBlock()) + || (prev instanceof Element && (((Element) prev).isBlock() || prev.isNode("br"))) // br is a bit special - make sure we don't get a dangling blank line, but not a block otherwise wraps in head ; if (couldSkip && isBlank) return; diff --git a/src/test/java/org/jsoup/nodes/ElementTest.java b/src/test/java/org/jsoup/nodes/ElementTest.java index bc17127113..20954efa38 100644 --- a/src/test/java/org/jsoup/nodes/ElementTest.java +++ b/src/test/java/org/jsoup/nodes/ElementTest.java @@ -2286,6 +2286,12 @@ void prettySerializationRoundTrips(Document.OutputSettings settings) { assertEquals("

Hello
\n there
\n now.

", doc.body().html()); } + @Test void prettyprintBrInBlock() { + String html = "

"; + Document doc = Jsoup.parse(html); + assertEquals("
\n
\n
", doc.body().html()); // not div\n br\n \n/div + } + @Test void preformatFlowsToChildTextNodes() { // https://github.com/jhy/jsoup/issues/1776 String html = "
One\n\nTwo\n   \nThree\n Four Five\n  Six\n
";