aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java12
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/Checkbox.java18
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java1
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java16
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java4
5 files changed, 51 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java
index 80f807e..7618db7 100644
--- a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java
+++ b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java
@@ -299,6 +299,18 @@ public class DocumentToHtml {
}
@Override
+ public List<HtmlNode> visit(Checkbox checkbox, Context context) {
+ Map<String, String> attributes = new HashMap<>();
+ attributes.put("type", "checkbox");
+
+ if (checkbox.checked()) {
+ attributes.put("checked", "checked");
+ }
+
+ return list(Html.element("input", attributes));
+ }
+
+ @Override
public List<HtmlNode> visit(Bookmark bookmark, Context context) {
return list(Html.element("a", map("id", generateId(bookmark.getName())), list(Html.FORCE_WRITE)));
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Checkbox.java b/src/main/java/org/zwobble/mammoth/internal/documents/Checkbox.java
new file mode 100644
index 0000000..62e2944
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/Checkbox.java
@@ -0,0 +1,18 @@
+package org.zwobble.mammoth.internal.documents;
+
+public class Checkbox implements DocumentElement {
+ private final boolean checked;
+
+ public Checkbox(boolean checked) {
+ this.checked = checked;
+ }
+
+ public boolean checked() {
+ return this.checked;
+ }
+
+ @Override
+ public <T, U> T accept(DocumentElementVisitor<T, U> visitor, U context) {
+ return visitor.visit(this, context);
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java b/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java
index 908a9b7..ea67113 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java
@@ -13,6 +13,7 @@ public interface DocumentElementVisitor<T, U> {
T visit(TableCell tableCell, U context);
T visit(Hyperlink hyperlink, U context);
+ T visit(Checkbox checkbox, U context);
T visit(Bookmark bookmark, U context);
T visit(NoteReference noteReference, U context);
T visit(CommentReference commentReference, U context);
diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java
index 3cea235..c5d007e 100644
--- a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java
@@ -455,6 +455,22 @@ public class DocumentToHtmlTests {
}
@Test
+ public void uncheckedCheckboxIsConvertedToUncheckedCheckboxInput() {
+ assertThat(
+ convertToHtml(checkbox(false)),
+ deepEquals(list(Html.element("input", map("type", "checkbox"))))
+ );
+ }
+
+ @Test
+ public void checkedCheckboxIsConvertedToCheckedCheckboxInput() {
+ assertThat(
+ convertToHtml(checkbox(true)),
+ deepEquals(list(Html.element("input", map("type", "checkbox", "checked", "checked"))))
+ );
+ }
+
+ @Test
public void bookmarksAreConvertedToAnchorsWithIds() {
assertThat(
convertToHtml(new Bookmark("start")),
diff --git a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java
index d807e57..93dbccc 100644
--- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java
+++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java
@@ -184,4 +184,8 @@ public class DocumentElementMakers {
public static Argument<Optional<String>> withTargetFrame(String targetFrame) {
return arg(TARGET_FRAME, Optional.of(targetFrame));
}
+
+ public static Checkbox checkbox(boolean checked) {
+ return new Checkbox(checked);
+ }
}