diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-06-08 09:52:52 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-06-08 09:52:52 +0100 |
| commit | cde09b91e08a48b2a0e0022c4147f0bb2e1fb8b7 (patch) | |
| tree | abc2e7c11dd7fe10f5134fd2fd29b74fcdfa09d3 /src/main/java/org/zwobble/mammoth/internal | |
| parent | 778953dd078dcb1139b427e8e410350c0411d394 (diff) | |
Add HasChildren::replaceChildren()
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal')
8 files changed, 58 insertions, 8 deletions
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 5adc50d..b1807d5 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 { +public class Document implements HasChildren<Document> { private final List<DocumentElement> children; private final Notes notes; private final List<Comment> comments; @@ -13,10 +13,16 @@ public class Document implements HasChildren { this.comments = comments; } + @Override public List<DocumentElement> getChildren() { return children; } + @Override + public Document replaceChildren(List<DocumentElement> newChildren) { + return new Document(newChildren, this.notes, this.comments); + } + public Notes getNotes() { return notes; } 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 2a5280e..11789b0 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 { +public interface HasChildren<T> { List<DocumentElement> getChildren(); + T replaceChildren(List<DocumentElement> newChildren); } 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 c3fe794..bf86ffe 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 { +public class Hyperlink implements DocumentElement, HasChildren<Hyperlink> { public static Hyperlink href(String href, Optional<String> targetFrame, List<DocumentElement> children) { return new Hyperlink(Optional.of(href), Optional.empty(), targetFrame, children); } @@ -42,6 +42,11 @@ public class Hyperlink implements DocumentElement, HasChildren { } @Override + public Hyperlink replaceChildren(List<DocumentElement> newChildren) { + return new Hyperlink(this.href, this.anchor, this.targetFrame, newChildren); + } + + @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/Paragraph.java b/src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java index 58c3453..c9859b6 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 { +public class Paragraph implements DocumentElement, HasChildren<Paragraph> { private final Optional<Style> style; private final Optional<NumberingLevel> numbering; private final ParagraphIndent indent; @@ -33,11 +33,17 @@ public class Paragraph implements DocumentElement, HasChildren { return indent; } + @Override public List<DocumentElement> getChildren() { return children; } @Override + public Paragraph replaceChildren(List<DocumentElement> newChildren) { + return new Paragraph(this.style, this.numbering, this.indent, newChildren); + } + + @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/Run.java b/src/main/java/org/zwobble/mammoth/internal/documents/Run.java index cb8bf1f..d1de84a 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 { +public class Run implements DocumentElement, HasChildren<Run> { private final Optional<String> highlight; private final boolean isBold; private final boolean isItalic; @@ -75,11 +75,28 @@ public class Run implements DocumentElement, HasChildren { return style; } + @Override public List<DocumentElement> getChildren() { return children; } @Override + public Run replaceChildren(List<DocumentElement> newChildren) { + return new Run( + this.highlight, + this.isBold, + this.isItalic, + this.isUnderline, + this.isStrikethrough, + this.isAllCaps, + this.isSmallCaps, + this.verticalAlignment, + this.style, + newChildren + ); + } + + @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/Table.java b/src/main/java/org/zwobble/mammoth/internal/documents/Table.java index c58808c..6f1751a 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 { +public class Table implements DocumentElement, HasChildren<Table> { private final Optional<Style> style; private final List<DocumentElement> children; @@ -22,6 +22,11 @@ public class Table implements DocumentElement, HasChildren { } @Override + public Table replaceChildren(List<DocumentElement> newChildren) { + return new Table(this.style, newChildren); + } + + @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/TableCell.java b/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java index 2837725..14900aa 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 { +public class TableCell implements DocumentElement, HasChildren<TableCell> { private final int rowspan; private final int colspan; private final List<DocumentElement> children; @@ -27,6 +27,11 @@ public class TableCell implements DocumentElement, HasChildren { } @Override + public TableCell replaceChildren(List<DocumentElement> newChildren) { + return new TableCell(this.rowspan, this.colspan, newChildren); + } + + @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/TableRow.java b/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java index 0b5721d..00edc5f 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 { +public class TableRow implements DocumentElement, HasChildren<TableRow> { private final List<DocumentElement> children; private final boolean isHeader; @@ -17,6 +17,11 @@ public class TableRow implements DocumentElement, HasChildren { } @Override + public TableRow replaceChildren(List<DocumentElement> newChildren) { + return new TableRow(newChildren, this.isHeader); + } + + @Override public <T, U> T accept(DocumentElementVisitor<T, U> visitor, U context) { return visitor.visit(this, context); } |
