aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java35
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java6
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/Document.java9
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java2
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/HasGetChildren.java7
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/Run.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/Table.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java8
13 files changed, 49 insertions, 47 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 6186cdb..dbbe3c3 100644
--- a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java
+++ b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java
@@ -81,22 +81,6 @@ public class DocumentToHtml {
this.comments = Maps.toMapWithKey(comments, Comment::getCommentId);
}
- private List<HtmlNode> convertToHtml(Document document, Context context) {
- List<HtmlNode> mainBody = convertChildrenToHtml(document, context);
- // TODO: can you have note references inside a note?
- List<Note> notes = findNotes(document, noteReferences);
-
- List<HtmlNode> noteNodes = notes.isEmpty()
- ? list()
- : list(Html.element("ol", eagerMap(notes, note -> convertToHtml(note, context))));
-
- List<HtmlNode> commentNodes = referencedComments.isEmpty()
- ? list()
- : list(Html.element("dl", eagerFlatMap(referencedComments, comment -> convertToHtml(comment, context))));
-
- return eagerConcat(mainBody, noteNodes, commentNodes);
- }
-
private HtmlNode convertToHtml(Note note, Context context) {
String id = generateNoteHtmlId(note.getNoteType(), note.getId());
String referenceId = generateNoteRefHtmlId(note.getNoteType(), note.getId());
@@ -135,12 +119,29 @@ public class DocumentToHtml {
);
}
- private <T> List<HtmlNode> convertChildrenToHtml(HasChildren<T> element, Context context) {
+ private <T> List<HtmlNode> convertChildrenToHtml(HasChildren element, Context context) {
return convertToHtml(element.getChildren(), context);
}
private class ElementConverterVisitor implements DocumentElementVisitor<List<HtmlNode>, Context> {
@Override
+ public List<HtmlNode> visit(Document document, Context context) {
+ List<HtmlNode> mainBody = convertChildrenToHtml(document, context);
+ // TODO: can you have note references inside a note?
+ List<Note> notes = findNotes(document, noteReferences);
+
+ List<HtmlNode> noteNodes = notes.isEmpty()
+ ? list()
+ : list(Html.element("ol", eagerMap(notes, note -> convertToHtml(note, context))));
+
+ List<HtmlNode> commentNodes = referencedComments.isEmpty()
+ ? list()
+ : list(Html.element("dl", eagerFlatMap(referencedComments, comment -> convertToHtml(comment, context))));
+
+ return eagerConcat(mainBody, noteNodes, commentNodes);
+ }
+
+ @Override
public List<HtmlNode> visit(Paragraph paragraph, Context context) {
Supplier<List<HtmlNode>> children = () -> {
List<HtmlNode> content = convertChildrenToHtml(paragraph, context);
diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java b/src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java
index e784840..5bfeb83 100644
--- a/src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java
+++ b/src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java
@@ -13,7 +13,7 @@ public class RawText {
return extractRawTextOfChildren(document);
}
- private static <T> String extractRawTextOfChildren(HasChildren<T> parent) {
+ private static String extractRawTextOfChildren(HasChildren parent) {
return extractRawText(parent.getChildren());
}
@@ -27,8 +27,8 @@ public class RawText {
} else if (node instanceof Tab) {
return "\t";
} else {
- List<DocumentElement> children = tryCast(HasGetChildren.class, node)
- .map(HasGetChildren::getChildren)
+ List<DocumentElement> children = tryCast(HasChildren.class, node)
+ .map(HasChildren::getChildren)
.orElse(list());
String suffix = tryCast(Paragraph.class, node).map(paragraph -> "\n\n").orElse("");
return extractRawText(children) + suffix;
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Document.java b/src/main/java/org/zwobble/mammoth/internal/documents/Document.java
index b1807d5..44d4db0 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/Document.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/Document.java
@@ -2,7 +2,7 @@ package org.zwobble.mammoth.internal.documents;
import java.util.List;
-public class Document implements HasChildren<Document> {
+public class Document implements DocumentElement, HasChildren {
private final List<DocumentElement> children;
private final Notes notes;
private final List<Comment> comments;
@@ -19,10 +19,15 @@ public class Document implements HasChildren<Document> {
}
@Override
- public Document replaceChildren(List<DocumentElement> newChildren) {
+ public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
return new Document(newChildren, this.notes, this.comments);
}
+ @Override
+ public <T, U> T accept(DocumentElementVisitor<T, U> visitor, U context) {
+ return visitor.visit(this, context);
+ }
+
public Notes getNotes() {
return notes;
}
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 ea67113..de288b9 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java
@@ -1,6 +1,8 @@
package org.zwobble.mammoth.internal.documents;
public interface DocumentElementVisitor<T, U> {
+ T visit(Document document, U context);
+
T visit(Paragraph paragraph, U context);
T visit(Run run, U context);
T visit(Text text, U context);
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java b/src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java
index 3b5ad4b..1d01141 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java
@@ -2,6 +2,7 @@ package org.zwobble.mammoth.internal.documents;
import java.util.List;
-public interface HasChildren<T> extends HasGetChildren {
- T replaceChildren(List<DocumentElement> newChildren);
+public interface HasChildren {
+ List<DocumentElement> getChildren();
+ DocumentElement replaceChildren(List<DocumentElement> newChildren);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/HasGetChildren.java b/src/main/java/org/zwobble/mammoth/internal/documents/HasGetChildren.java
deleted file mode 100644
index 18d39fc..0000000
--- a/src/main/java/org/zwobble/mammoth/internal/documents/HasGetChildren.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.zwobble.mammoth.internal.documents;
-
-import java.util.List;
-
-public interface HasGetChildren {
- List<DocumentElement> getChildren();
-}
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java b/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java
index bf86ffe..6191986 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java
@@ -3,7 +3,7 @@ package org.zwobble.mammoth.internal.documents;
import java.util.List;
import java.util.Optional;
-public class Hyperlink implements DocumentElement, HasChildren<Hyperlink> {
+public class Hyperlink implements DocumentElement, HasChildren {
public static Hyperlink href(String href, Optional<String> targetFrame, List<DocumentElement> children) {
return new Hyperlink(Optional.of(href), Optional.empty(), targetFrame, children);
}
@@ -42,7 +42,7 @@ public class Hyperlink implements DocumentElement, HasChildren<Hyperlink> {
}
@Override
- public Hyperlink replaceChildren(List<DocumentElement> newChildren) {
+ public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
return new Hyperlink(this.href, this.anchor, this.targetFrame, newChildren);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java b/src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java
index c9859b6..d3967c9 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java
@@ -3,7 +3,7 @@ package org.zwobble.mammoth.internal.documents;
import java.util.List;
import java.util.Optional;
-public class Paragraph implements DocumentElement, HasChildren<Paragraph> {
+public class Paragraph implements DocumentElement, HasChildren {
private final Optional<Style> style;
private final Optional<NumberingLevel> numbering;
private final ParagraphIndent indent;
@@ -39,7 +39,7 @@ public class Paragraph implements DocumentElement, HasChildren<Paragraph> {
}
@Override
- public Paragraph replaceChildren(List<DocumentElement> newChildren) {
+ public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
return new Paragraph(this.style, this.numbering, this.indent, newChildren);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Run.java b/src/main/java/org/zwobble/mammoth/internal/documents/Run.java
index d1de84a..6deca28 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/Run.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/Run.java
@@ -3,7 +3,7 @@ package org.zwobble.mammoth.internal.documents;
import java.util.List;
import java.util.Optional;
-public class Run implements DocumentElement, HasChildren<Run> {
+public class Run implements DocumentElement, HasChildren {
private final Optional<String> highlight;
private final boolean isBold;
private final boolean isItalic;
@@ -81,7 +81,7 @@ public class Run implements DocumentElement, HasChildren<Run> {
}
@Override
- public Run replaceChildren(List<DocumentElement> newChildren) {
+ public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
return new Run(
this.highlight,
this.isBold,
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Table.java b/src/main/java/org/zwobble/mammoth/internal/documents/Table.java
index 6f1751a..7656a93 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/Table.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/Table.java
@@ -3,7 +3,7 @@ package org.zwobble.mammoth.internal.documents;
import java.util.List;
import java.util.Optional;
-public class Table implements DocumentElement, HasChildren<Table> {
+public class Table implements DocumentElement, HasChildren {
private final Optional<Style> style;
private final List<DocumentElement> children;
@@ -22,7 +22,7 @@ public class Table implements DocumentElement, HasChildren<Table> {
}
@Override
- public Table replaceChildren(List<DocumentElement> newChildren) {
+ public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
return new Table(this.style, newChildren);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java b/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java
index 14900aa..bf3c8b5 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java
@@ -2,7 +2,7 @@ package org.zwobble.mammoth.internal.documents;
import java.util.List;
-public class TableCell implements DocumentElement, HasChildren<TableCell> {
+public class TableCell implements DocumentElement, HasChildren {
private final int rowspan;
private final int colspan;
private final List<DocumentElement> children;
@@ -27,7 +27,7 @@ public class TableCell implements DocumentElement, HasChildren<TableCell> {
}
@Override
- public TableCell replaceChildren(List<DocumentElement> newChildren) {
+ public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
return new TableCell(this.rowspan, this.colspan, newChildren);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java b/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java
index 00edc5f..6d5260f 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java
@@ -2,7 +2,7 @@ package org.zwobble.mammoth.internal.documents;
import java.util.List;
-public class TableRow implements DocumentElement, HasChildren<TableRow> {
+public class TableRow implements DocumentElement, HasChildren {
private final List<DocumentElement> children;
private final boolean isHeader;
@@ -17,7 +17,7 @@ public class TableRow implements DocumentElement, HasChildren<TableRow> {
}
@Override
- public TableRow replaceChildren(List<DocumentElement> newChildren) {
+ public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
return new TableRow(newChildren, this.isHeader);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
index 39200c7..436d5d9 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
@@ -591,7 +591,7 @@ class StatefulBodyXmlReader {
.orElse(false);
}
- private static class UnmergedTableCell implements DocumentElement, HasChildren<UnmergedTableCell> {
+ private static class UnmergedTableCell implements DocumentElement, HasChildren {
private final boolean vmerge;
private final int colspan;
private final List<DocumentElement> children;
@@ -608,7 +608,7 @@ class StatefulBodyXmlReader {
}
@Override
- public UnmergedTableCell replaceChildren(List<DocumentElement> newChildren) {
+ public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
return new UnmergedTableCell(this.vmerge, this.colspan, newChildren);
}
@@ -771,8 +771,8 @@ class StatefulBodyXmlReader {
) {
return element -> {
if (element instanceof HasChildren) {
- element = ((HasChildren<DocumentElement>) element).replaceChildren(
- Lists.eagerMap(((HasGetChildren) element).getChildren(), transformElementsOfType(elementClass, transform))
+ element = ((HasChildren) element).replaceChildren(
+ Lists.eagerMap(((HasChildren) element).getChildren(), transformElementsOfType(elementClass, transform))
);
}