diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-08-03 09:36:04 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-08-03 09:36:04 +0100 |
| commit | 2b5635c1425f7a4e31d2d0aedb892f2d8d033f92 (patch) | |
| tree | 1dad2042a89092872c4b4c4a01a0250cbd9dcac2 /src/main/java | |
| parent | 7f6f1e5cc669ddaf09b7800daacc7bd06037e4c9 (diff) | |
Remove type argument from HasChildren
Diffstat (limited to 'src/main/java')
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)) ); } |
