From fa21ba7dbc4626fb7a6ed08ce3958a9e5fb11b7c Mon Sep 17 00:00:00 2001 From: benjamin-dreux Date: Thu, 14 Nov 2024 07:37:31 -0500 Subject: [PATCH 1/3] add failing test --- .../java/htmlflow/test/TestIndentation.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/test/java/htmlflow/test/TestIndentation.java b/src/test/java/htmlflow/test/TestIndentation.java index 8de96c9d..35d4f5bb 100644 --- a/src/test/java/htmlflow/test/TestIndentation.java +++ b/src/test/java/htmlflow/test/TestIndentation.java @@ -77,6 +77,23 @@ public void viewWithNoIndent() { String actual = view.setIndented(false).render(); assertEquals(expected, actual); } + + @Test + public void viewWithTextAreaAndIndent() { + HtmlView view = HtmlFlow.view(page -> page + .div() + .textarea() + .text("Sample text\nfoo\nbar") + .__() + .script() + .raw("// some comment" + lineSeparator() + + "console.log('Hello world');") + .__() // script + .__()); // div + + String actual = view.setIndented(true).render(); + assertEquals(expected, actual); + } @Test public void viewAsyncWithNoIndent() { HtmlViewAsync view = HtmlFlow.viewAsync(page -> page From 8c72483e6c5555bdd9dfc6475ddd7ef468cb8515 Mon Sep 17 00:00:00 2001 From: benjamin-dreux Date: Thu, 14 Nov 2024 07:48:20 -0500 Subject: [PATCH 2/3] adjust failing test --- src/test/java/htmlflow/test/TestIndentation.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/test/java/htmlflow/test/TestIndentation.java b/src/test/java/htmlflow/test/TestIndentation.java index 35d4f5bb..1a2c7597 100644 --- a/src/test/java/htmlflow/test/TestIndentation.java +++ b/src/test/java/htmlflow/test/TestIndentation.java @@ -91,8 +91,21 @@ public void viewWithTextAreaAndIndent() { .__() // script .__()); // div + + String expectedResult = + "
" + lineSeparator() + + " " + lineSeparator() + + " " + lineSeparator() + + "
"; + String actual = view.setIndented(true).render(); - assertEquals(expected, actual); + assertEquals(expectedResult, actual); } @Test public void viewAsyncWithNoIndent() { From b491dec5582bf440fd0ff1c87e0a73539489ac17 Mon Sep 17 00:00:00 2001 From: benjamin-dreux Date: Thu, 14 Nov 2024 20:42:57 -0500 Subject: [PATCH 3/3] add fix for textarea --- .../java/htmlflow/visitor/HtmlVisitor.java | 23 +++++++++++++++++-- .../java/htmlflow/test/TestIndentation.java | 12 +++++----- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/main/java/htmlflow/visitor/HtmlVisitor.java b/src/main/java/htmlflow/visitor/HtmlVisitor.java index 54ec03da..79b3a1f7 100644 --- a/src/main/java/htmlflow/visitor/HtmlVisitor.java +++ b/src/main/java/htmlflow/visitor/HtmlVisitor.java @@ -134,6 +134,23 @@ public final void newlineAndIndent(){ isClosed = true; } } + /** + * Adds a new line. + * Checks whether the parent element is still opened or not (!isClosed). + * If it is open then it closes the parent begin tag with ">" (!isClosed). + */ + public final void newline(){ + if (isClosed){ + write("\n"); + } else { + depth++; + write(FINISH_TAG); + if(isIndented) + write("\n"); + + isClosed = true; + } + } /** * This method appends the String {@code " } /** @@ -195,7 +214,7 @@ public final void visitAttributeBoolean(String name, String value) { @Override public final void visitText(Text text) { - newlineAndIndent(); + newline(); write(HtmlEscapers.htmlEscaper().escape(text.getValue())); } /** diff --git a/src/test/java/htmlflow/test/TestIndentation.java b/src/test/java/htmlflow/test/TestIndentation.java index 1a2c7597..0ffef9b0 100644 --- a/src/test/java/htmlflow/test/TestIndentation.java +++ b/src/test/java/htmlflow/test/TestIndentation.java @@ -94,14 +94,14 @@ public void viewWithTextAreaAndIndent() { String expectedResult = "
" + lineSeparator() + - " " + lineSeparator() + - " " + lineSeparator() + + "bar" + lineSeparator() + + "\t" + lineSeparator() + "
"; String actual = view.setIndented(true).render();