inMemory() {
* @param config The Config which will specify text escapement, tag closing, etc.
* @return An HtmlBuilder for flat HTML.
*/
+ @Deprecated
public static final FlatHtml inMemory(Config config) {
return into(new StringBuilder(), config);
}
diff --git a/library/src/main/java/j2html/rendering/HtmlBuilder.java b/library/src/main/java/j2html/rendering/HtmlBuilder.java
index c1490027..fff2a34f 100644
--- a/library/src/main/java/j2html/rendering/HtmlBuilder.java
+++ b/library/src/main/java/j2html/rendering/HtmlBuilder.java
@@ -7,6 +7,9 @@
* Appendable, and support appending HTML-specific character
* sequences to that Appendable.
*
+ * This library provides configurable implementations for flat and
+ * indented HTML, which can be obtained from the {@link DefaultHtmlBuilder}.
+ *
* Note: HtmlBuilder extends Appendable for compatibility with
* previous version of this library. This extension will probably be
* removed in the future, so avoid relying on the deprecated methods
diff --git a/library/src/main/java/j2html/rendering/IndentedHtml.java b/library/src/main/java/j2html/rendering/IndentedHtml.java
index 53c36f4a..1000dd9b 100644
--- a/library/src/main/java/j2html/rendering/IndentedHtml.java
+++ b/library/src/main/java/j2html/rendering/IndentedHtml.java
@@ -12,7 +12,10 @@
* Composes HTML with lines breaks and indentation between tags and text.
*
* @param The type of the Appendable to which HTML will be appended.
+ *
+ * @deprecated in favor of {@link DefaultHtmlBuilder}
*/
+// should be made package private in 2.0
public class IndentedHtml implements HtmlBuilder {
/**
@@ -23,6 +26,7 @@ public class IndentedHtml implements HtmlBuilder {
* @param The type of the Appendable to which HTML will be appended.
* @return An HtmlBuilder for indented HTML.
*/
+ @Deprecated
public static final IndentedHtml into(T out) {
return new IndentedHtml<>(out, Config.defaults());
}
@@ -46,6 +50,7 @@ public static final IndentedHtml into(T out, Config co
*
* @return An HtmlBuilder for indented HTML.
*/
+ @Deprecated
public static final IndentedHtml inMemory() {
return into(new StringBuilder());
}
@@ -57,6 +62,7 @@ public static final IndentedHtml inMemory() {
* @param config The Config which will specify indentation, text escapement, tag closing, etc.
* @return An HtmlBuilder for indented HTML.
*/
+ @Deprecated
public static final IndentedHtml inMemory(Config config) {
return into(new StringBuilder(), config);
}
diff --git a/library/src/main/java/j2html/tags/ContainerTag.java b/library/src/main/java/j2html/tags/ContainerTag.java
index 5fc688b0..900d6dae 100644
--- a/library/src/main/java/j2html/tags/ContainerTag.java
+++ b/library/src/main/java/j2html/tags/ContainerTag.java
@@ -2,11 +2,9 @@
import j2html.Config;
import j2html.attributes.Attribute;
-import j2html.rendering.TagBuilder;
-import j2html.rendering.FlatHtml;
+import j2html.rendering.DefaultHtmlBuilder;
import j2html.rendering.HtmlBuilder;
-import j2html.rendering.IndentedHtml;
-
+import j2html.rendering.TagBuilder;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -145,9 +143,10 @@ public int getNumChildren() {
*
* @return the rendered and formatted string
*/
+ @SuppressWarnings("deprecation")
public String renderFormatted() {
try {
- return render(IndentedHtml.into(new StringBuilder(), Config.global())).toString();
+ return render(DefaultHtmlBuilder.withConfig(Config.global()).indented(true).inMemory()).toString();
}catch (IOException e) {
throw new RuntimeException(e.getMessage(), e);
}
@@ -179,7 +178,7 @@ public A render(HtmlBuilder builder, Object model) thr
public void renderModel(Appendable writer, Object model) throws IOException {
HtmlBuilder> builder = (writer instanceof HtmlBuilder)
? (HtmlBuilder>) writer
- : FlatHtml.into(writer, Config.global());
+ : DefaultHtmlBuilder.withConfig(Config.global()).into(writer);
render(builder, model);
}
diff --git a/library/src/main/java/j2html/tags/EmptyTag.java b/library/src/main/java/j2html/tags/EmptyTag.java
index e2b4ed02..eebf81d3 100644
--- a/library/src/main/java/j2html/tags/EmptyTag.java
+++ b/library/src/main/java/j2html/tags/EmptyTag.java
@@ -2,10 +2,9 @@
import j2html.Config;
import j2html.attributes.Attribute;
-import j2html.rendering.TagBuilder;
-import j2html.rendering.FlatHtml;
+import j2html.rendering.DefaultHtmlBuilder;
import j2html.rendering.HtmlBuilder;
-
+import j2html.rendering.TagBuilder;
import java.io.IOException;
public class EmptyTag> extends Tag {
@@ -35,7 +34,7 @@ public A render(HtmlBuilder builder, Object model) thr
public void renderModel(Appendable writer, Object model) throws IOException {
HtmlBuilder> builder = (writer instanceof HtmlBuilder)
? (HtmlBuilder>) writer
- : FlatHtml.into(writer, Config.global());
+ : DefaultHtmlBuilder.withConfig(Config.global()).into(writer);
render(builder, model);
}
diff --git a/library/src/main/java/j2html/tags/Renderable.java b/library/src/main/java/j2html/tags/Renderable.java
index 67ea012a..10fd99fe 100644
--- a/library/src/main/java/j2html/tags/Renderable.java
+++ b/library/src/main/java/j2html/tags/Renderable.java
@@ -1,9 +1,8 @@
package j2html.tags;
import j2html.Config;
-import j2html.rendering.FlatHtml;
+import j2html.rendering.DefaultHtmlBuilder;
import j2html.rendering.HtmlBuilder;
-
import java.io.IOException;
import java.io.UncheckedIOException;
@@ -42,9 +41,10 @@ default T render(HtmlBuilder builder) throws IOExcepti
* Create a StringBuilder and use it to render the Renderable and it's
* children
*/
+ @SuppressWarnings("deprecation")
default String render() {
try {
- return render(FlatHtml.into(new StringBuilder(), Config.global())).toString();
+ return render(DefaultHtmlBuilder.withConfig(Config.global()).inMemory()).toString();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
@@ -60,7 +60,7 @@ default void render(Appendable writer) throws IOException {
if (writer instanceof HtmlBuilder) {
render((HtmlBuilder extends Appendable>) writer);
} else {
- render(FlatHtml.into(writer, Config.global()));
+ render(DefaultHtmlBuilder.withConfig(Config.global()).into(writer));
}
}
diff --git a/library/src/main/java/j2html/tags/Text.java b/library/src/main/java/j2html/tags/Text.java
index 8a512ec4..71a4dfc7 100644
--- a/library/src/main/java/j2html/tags/Text.java
+++ b/library/src/main/java/j2html/tags/Text.java
@@ -1,9 +1,8 @@
package j2html.tags;
import j2html.Config;
-import j2html.rendering.FlatHtml;
+import j2html.rendering.DefaultHtmlBuilder;
import j2html.rendering.HtmlBuilder;
-
import java.io.IOException;
public class Text extends DomContent {
@@ -25,7 +24,7 @@ public T render(HtmlBuilder builder, Object model) thr
public void renderModel(Appendable writer, Object model) throws IOException {
HtmlBuilder> builder = (writer instanceof HtmlBuilder)
? (HtmlBuilder>) writer
- : FlatHtml.into(writer, Config.global());
+ : DefaultHtmlBuilder.withConfig(Config.global()).into(writer);
render(builder, model);
}
diff --git a/library/src/main/java/j2html/tags/UnescapedText.java b/library/src/main/java/j2html/tags/UnescapedText.java
index 55674f36..5bb8474a 100644
--- a/library/src/main/java/j2html/tags/UnescapedText.java
+++ b/library/src/main/java/j2html/tags/UnescapedText.java
@@ -1,9 +1,8 @@
package j2html.tags;
import j2html.Config;
-import j2html.rendering.FlatHtml;
+import j2html.rendering.DefaultHtmlBuilder;
import j2html.rendering.HtmlBuilder;
-
import java.io.IOException;
public class UnescapedText extends DomContent {
@@ -25,7 +24,7 @@ public T render(HtmlBuilder builder, Object model) thr
public void renderModel(Appendable writer, Object model) throws IOException {
HtmlBuilder> builder = (writer instanceof HtmlBuilder)
? (HtmlBuilder>) writer
- : FlatHtml.into(writer, Config.global());
+ : DefaultHtmlBuilder.withConfig(Config.global()).into(writer);
render(builder, model);
}
diff --git a/library/src/main/java/j2html/utils/Indenter.java b/library/src/main/java/j2html/utils/Indenter.java
index 379e6e9f..54580967 100644
--- a/library/src/main/java/j2html/utils/Indenter.java
+++ b/library/src/main/java/j2html/utils/Indenter.java
@@ -1,6 +1,17 @@
package j2html.utils;
+import java.util.Collections;
+
@FunctionalInterface
public interface Indenter {
+
String indent(int level, String text);
+
+ static Indenter with(String indentString) {
+ return (level, text) -> String.join("", Collections.nCopies(level, indentString)) + text;
+ }
+
+ static Indenter defaults() {
+ return with(" ");
+ }
}
diff --git a/library/src/test/java/j2html/rendering/RenderingCompatabilityTest.java b/library/src/test/java/j2html/rendering/RenderingCompatabilityTest.java
index e8fb5a35..1adcd69c 100644
--- a/library/src/test/java/j2html/rendering/RenderingCompatabilityTest.java
+++ b/library/src/test/java/j2html/rendering/RenderingCompatabilityTest.java
@@ -68,7 +68,7 @@ public void renderModel(Appendable writer, Object model) throws IOException {
// Rendering with an HtmlBuilder defers to the original methods.
assertThat(
- dom.render(FlatHtml.inMemory(), "success").toString(),
+ dom.render(DefaultHtmlBuilder.inMemory(), "success").toString(),
is("success
")
);
}
@@ -85,19 +85,19 @@ public void client_classes_which_implement_attribute_rendering_continue_to_work_
assertThat(stringBuilder.toString(), is(" mock=\"null\""));
assertThat(
- mock.render(FlatHtml.inMemory(), "success").toString(),
+ mock.render(DefaultHtmlBuilder.inMemory(), "success").toString(),
is(" mock=\"success\"")
);
// In empty tags.
assertThat(
- input().attr(mock).render(FlatHtml.inMemory(), "success").toString(),
+ input().attr(mock).render(DefaultHtmlBuilder.inMemory(), "success").toString(),
is(" ")
);
// In container tags.
assertThat(
- div().attr(mock).render(FlatHtml.inMemory(), "success").toString(),
+ div().attr(mock).render(DefaultHtmlBuilder.inMemory(), "success").toString(),
is("
")
);
}
diff --git a/library/src/test/java/j2html/tags/TextTest.java b/library/src/test/java/j2html/tags/TextTest.java
index 359a185a..6b88b150 100644
--- a/library/src/test/java/j2html/tags/TextTest.java
+++ b/library/src/test/java/j2html/tags/TextTest.java
@@ -1,10 +1,8 @@
package j2html.tags;
-import j2html.rendering.FlatHtml;
-import j2html.rendering.IndentedHtml;
-import org.junit.Test;
-
+import j2html.rendering.DefaultHtmlBuilder;
import java.io.IOException;
+import org.junit.Test;
import static j2html.TagCreator.rawHtml;
import static j2html.TagCreator.text;
@@ -15,13 +13,13 @@ public class TextTest {
@Test
public void null_text_is_rendered_as_a_string_literal() throws IOException {
- assertThat(text(null).render(FlatHtml.inMemory()).toString(), is("null"));
- assertThat(text(null).render(IndentedHtml.inMemory()).toString(), is("null\n"));
+ assertThat(text(null).render(DefaultHtmlBuilder.inMemory()).toString(), is("null"));
+ assertThat(text(null).render(DefaultHtmlBuilder.indented(true).inMemory()).toString(), is("null\n"));
}
@Test
public void null_unescaped_text_is_rendered_as_a_string_literal() throws IOException {
- assertThat(rawHtml(null).render(FlatHtml.inMemory()).toString(), is("null"));
- assertThat(rawHtml(null).render(IndentedHtml.inMemory()).toString(), is("null\n"));
+ assertThat(rawHtml(null).render(DefaultHtmlBuilder.inMemory()).toString(), is("null"));
+ assertThat(rawHtml(null).render(DefaultHtmlBuilder.indented(true).inMemory()).toString(), is("null\n"));
}
}