diff options
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/documents')
6 files changed, 28 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/mammoth/documents/Document.java b/src/main/java/org/zwobble/mammoth/documents/Document.java index a31081a..4d91925 100644 --- a/src/main/java/org/zwobble/mammoth/documents/Document.java +++ b/src/main/java/org/zwobble/mammoth/documents/Document.java @@ -2,10 +2,14 @@ package org.zwobble.mammoth.documents; import java.util.List; -public class Document { +public class Document implements HasChildren { private final List<DocumentElement> children; public Document(List<DocumentElement> children) { this.children = children; } + + public List<DocumentElement> getChildren() { + return children; + } } diff --git a/src/main/java/org/zwobble/mammoth/documents/DocumentElement.java b/src/main/java/org/zwobble/mammoth/documents/DocumentElement.java index d7b20d3..fd3990c 100644 --- a/src/main/java/org/zwobble/mammoth/documents/DocumentElement.java +++ b/src/main/java/org/zwobble/mammoth/documents/DocumentElement.java @@ -1,4 +1,5 @@ package org.zwobble.mammoth.documents; public interface DocumentElement { + <T> T accept(DocumentElementVisitor<T> visitor); } diff --git a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java new file mode 100644 index 0000000..bb41ff2 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java @@ -0,0 +1,7 @@ +package org.zwobble.mammoth.documents; + +public interface DocumentElementVisitor<T> { + T visit(ParagraphElement paragraph); + T visit(RunElement run); + T visit(TextElement text); +} diff --git a/src/main/java/org/zwobble/mammoth/documents/ParagraphElement.java b/src/main/java/org/zwobble/mammoth/documents/ParagraphElement.java index 22d9306..15c2b85 100644 --- a/src/main/java/org/zwobble/mammoth/documents/ParagraphElement.java +++ b/src/main/java/org/zwobble/mammoth/documents/ParagraphElement.java @@ -19,4 +19,9 @@ public class ParagraphElement implements DocumentElement, HasChildren { public List<DocumentElement> getChildren() { return children; } + + @Override + public <T> T accept(DocumentElementVisitor<T> visitor) { + return visitor.visit(this); + } } diff --git a/src/main/java/org/zwobble/mammoth/documents/RunElement.java b/src/main/java/org/zwobble/mammoth/documents/RunElement.java index ef063dc..f33eca3 100644 --- a/src/main/java/org/zwobble/mammoth/documents/RunElement.java +++ b/src/main/java/org/zwobble/mammoth/documents/RunElement.java @@ -12,4 +12,9 @@ public class RunElement implements DocumentElement, HasChildren { public List<DocumentElement> getChildren() { return children; } + + @Override + public <T> T accept(DocumentElementVisitor<T> visitor) { + return visitor.visit(this); + } } diff --git a/src/main/java/org/zwobble/mammoth/documents/TextElement.java b/src/main/java/org/zwobble/mammoth/documents/TextElement.java index e2e7383..00281d0 100644 --- a/src/main/java/org/zwobble/mammoth/documents/TextElement.java +++ b/src/main/java/org/zwobble/mammoth/documents/TextElement.java @@ -10,4 +10,9 @@ public class TextElement implements DocumentElement { public String getValue() { return value; } + + @Override + public <T> T accept(DocumentElementVisitor<T> visitor) { + return visitor.visit(this); + } } |
