Skip to content

Commit 2b5635c

Browse files
committed
Remove type argument from HasChildren
1 parent 7f6f1e5 commit 2b5635c

13 files changed

Lines changed: 49 additions & 47 deletions

File tree

src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,6 @@ private DocumentToHtml(DocumentToHtmlOptions options, List<Comment> comments) {
8181
this.comments = Maps.toMapWithKey(comments, Comment::getCommentId);
8282
}
8383

84-
private List<HtmlNode> convertToHtml(Document document, Context context) {
85-
List<HtmlNode> mainBody = convertChildrenToHtml(document, context);
86-
// TODO: can you have note references inside a note?
87-
List<Note> notes = findNotes(document, noteReferences);
88-
89-
List<HtmlNode> noteNodes = notes.isEmpty()
90-
? list()
91-
: list(Html.element("ol", eagerMap(notes, note -> convertToHtml(note, context))));
92-
93-
List<HtmlNode> commentNodes = referencedComments.isEmpty()
94-
? list()
95-
: list(Html.element("dl", eagerFlatMap(referencedComments, comment -> convertToHtml(comment, context))));
96-
97-
return eagerConcat(mainBody, noteNodes, commentNodes);
98-
}
99-
10084
private HtmlNode convertToHtml(Note note, Context context) {
10185
String id = generateNoteHtmlId(note.getNoteType(), note.getId());
10286
String referenceId = generateNoteRefHtmlId(note.getNoteType(), note.getId());
@@ -135,11 +119,28 @@ private List<HtmlNode> convertToHtml(List<DocumentElement> elements, Context con
135119
);
136120
}
137121

138-
private <T> List<HtmlNode> convertChildrenToHtml(HasChildren<T> element, Context context) {
122+
private <T> List<HtmlNode> convertChildrenToHtml(HasChildren element, Context context) {
139123
return convertToHtml(element.getChildren(), context);
140124
}
141125

142126
private class ElementConverterVisitor implements DocumentElementVisitor<List<HtmlNode>, Context> {
127+
@Override
128+
public List<HtmlNode> visit(Document document, Context context) {
129+
List<HtmlNode> mainBody = convertChildrenToHtml(document, context);
130+
// TODO: can you have note references inside a note?
131+
List<Note> notes = findNotes(document, noteReferences);
132+
133+
List<HtmlNode> noteNodes = notes.isEmpty()
134+
? list()
135+
: list(Html.element("ol", eagerMap(notes, note -> convertToHtml(note, context))));
136+
137+
List<HtmlNode> commentNodes = referencedComments.isEmpty()
138+
? list()
139+
: list(Html.element("dl", eagerFlatMap(referencedComments, comment -> convertToHtml(comment, context))));
140+
141+
return eagerConcat(mainBody, noteNodes, commentNodes);
142+
}
143+
143144
@Override
144145
public List<HtmlNode> visit(Paragraph paragraph, Context context) {
145146
Supplier<List<HtmlNode>> children = () -> {

src/main/java/org/zwobble/mammoth/internal/conversion/RawText.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public static String extractRawText(Document document) {
1313
return extractRawTextOfChildren(document);
1414
}
1515

16-
private static <T> String extractRawTextOfChildren(HasChildren<T> parent) {
16+
private static String extractRawTextOfChildren(HasChildren parent) {
1717
return extractRawText(parent.getChildren());
1818
}
1919

@@ -27,8 +27,8 @@ public static String extractRawText(DocumentElement node) {
2727
} else if (node instanceof Tab) {
2828
return "\t";
2929
} else {
30-
List<DocumentElement> children = tryCast(HasGetChildren.class, node)
31-
.map(HasGetChildren::getChildren)
30+
List<DocumentElement> children = tryCast(HasChildren.class, node)
31+
.map(HasChildren::getChildren)
3232
.orElse(list());
3333
String suffix = tryCast(Paragraph.class, node).map(paragraph -> "\n\n").orElse("");
3434
return extractRawText(children) + suffix;

src/main/java/org/zwobble/mammoth/internal/documents/Document.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.util.List;
44

5-
public class Document implements HasChildren<Document> {
5+
public class Document implements DocumentElement, HasChildren {
66
private final List<DocumentElement> children;
77
private final Notes notes;
88
private final List<Comment> comments;
@@ -19,10 +19,15 @@ public List<DocumentElement> getChildren() {
1919
}
2020

2121
@Override
22-
public Document replaceChildren(List<DocumentElement> newChildren) {
22+
public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
2323
return new Document(newChildren, this.notes, this.comments);
2424
}
2525

26+
@Override
27+
public <T, U> T accept(DocumentElementVisitor<T, U> visitor, U context) {
28+
return visitor.visit(this, context);
29+
}
30+
2631
public Notes getNotes() {
2732
return notes;
2833
}

src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.zwobble.mammoth.internal.documents;
22

33
public interface DocumentElementVisitor<T, U> {
4+
T visit(Document document, U context);
5+
46
T visit(Paragraph paragraph, U context);
57
T visit(Run run, U context);
68
T visit(Text text, U context);

src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.List;
44

5-
public interface HasChildren<T> extends HasGetChildren {
6-
T replaceChildren(List<DocumentElement> newChildren);
5+
public interface HasChildren {
6+
List<DocumentElement> getChildren();
7+
DocumentElement replaceChildren(List<DocumentElement> newChildren);
78
}

src/main/java/org/zwobble/mammoth/internal/documents/HasGetChildren.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44
import java.util.Optional;
55

6-
public class Hyperlink implements DocumentElement, HasChildren<Hyperlink> {
6+
public class Hyperlink implements DocumentElement, HasChildren {
77
public static Hyperlink href(String href, Optional<String> targetFrame, List<DocumentElement> children) {
88
return new Hyperlink(Optional.of(href), Optional.empty(), targetFrame, children);
99
}
@@ -42,7 +42,7 @@ public List<DocumentElement> getChildren() {
4242
}
4343

4444
@Override
45-
public Hyperlink replaceChildren(List<DocumentElement> newChildren) {
45+
public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
4646
return new Hyperlink(this.href, this.anchor, this.targetFrame, newChildren);
4747
}
4848

src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44
import java.util.Optional;
55

6-
public class Paragraph implements DocumentElement, HasChildren<Paragraph> {
6+
public class Paragraph implements DocumentElement, HasChildren {
77
private final Optional<Style> style;
88
private final Optional<NumberingLevel> numbering;
99
private final ParagraphIndent indent;
@@ -39,7 +39,7 @@ public List<DocumentElement> getChildren() {
3939
}
4040

4141
@Override
42-
public Paragraph replaceChildren(List<DocumentElement> newChildren) {
42+
public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
4343
return new Paragraph(this.style, this.numbering, this.indent, newChildren);
4444
}
4545

src/main/java/org/zwobble/mammoth/internal/documents/Run.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44
import java.util.Optional;
55

6-
public class Run implements DocumentElement, HasChildren<Run> {
6+
public class Run implements DocumentElement, HasChildren {
77
private final Optional<String> highlight;
88
private final boolean isBold;
99
private final boolean isItalic;
@@ -81,7 +81,7 @@ public List<DocumentElement> getChildren() {
8181
}
8282

8383
@Override
84-
public Run replaceChildren(List<DocumentElement> newChildren) {
84+
public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
8585
return new Run(
8686
this.highlight,
8787
this.isBold,

src/main/java/org/zwobble/mammoth/internal/documents/Table.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44
import java.util.Optional;
55

6-
public class Table implements DocumentElement, HasChildren<Table> {
6+
public class Table implements DocumentElement, HasChildren {
77
private final Optional<Style> style;
88
private final List<DocumentElement> children;
99

@@ -22,7 +22,7 @@ public List<DocumentElement> getChildren() {
2222
}
2323

2424
@Override
25-
public Table replaceChildren(List<DocumentElement> newChildren) {
25+
public DocumentElement replaceChildren(List<DocumentElement> newChildren) {
2626
return new Table(this.style, newChildren);
2727
}
2828

0 commit comments

Comments
 (0)