From 08af6720105bbb3cf2061e98727ba5ca67da3144 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 26 Mar 2016 09:44:01 +0000 Subject: Push decision over evaluation time into result static methods --- .../java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java | 8 ++------ .../java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java | 5 ++--- src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java | 8 +++----- .../java/org/zwobble/mammoth/internal/results/InternalResult.java | 5 ++--- 4 files changed, 9 insertions(+), 17 deletions(-) (limited to 'src/main') diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java index bf7321e..2770984 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java @@ -17,7 +17,6 @@ import java.util.function.Function; import static com.google.common.collect.Iterables.filter; import static org.zwobble.mammoth.internal.docx.ReadResult.EMPTY_SUCCESS; import static org.zwobble.mammoth.internal.docx.ReadResult.success; -import static org.zwobble.mammoth.internal.util.MammothIterables.lazyMap; import static org.zwobble.mammoth.internal.util.MammothLists.list; import static org.zwobble.mammoth.internal.util.MammothStrings.trimLeft; @@ -172,10 +171,7 @@ public class BodyXmlReader { } public ReadResult readElements(Iterable nodes) { - return ReadResult.flatten( - lazyMap( - filter(nodes, XmlElement.class), - this::readElement)); + return ReadResult.flatMap(filter(nodes, XmlElement.class), this::readElement); } private ReadResult readParagraph(XmlElement element) { @@ -286,7 +282,7 @@ public class BodyXmlReader { } private ReadResult readBlips(XmlElementList blips, Optional altText) { - return ReadResult.flatten(lazyMap(blips, blip -> readBlip(blip, altText))); + return ReadResult.flatMap(blips, blip -> readBlip(blip, altText)); } private ReadResult readBlip(XmlElement blip, Optional altText) { diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java index 9772563..235535e 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java @@ -1,14 +1,13 @@ package org.zwobble.mammoth.internal.docx; +import org.zwobble.mammoth.internal.documents.Note; import org.zwobble.mammoth.internal.documents.NoteType; import org.zwobble.mammoth.internal.results.InternalResult; -import org.zwobble.mammoth.internal.documents.Note; import org.zwobble.mammoth.internal.xml.XmlElement; import java.util.List; import static com.google.common.collect.Iterables.filter; -import static org.zwobble.mammoth.internal.util.MammothIterables.lazyMap; public class NotesXmlReader { public static NotesXmlReader footnote(BodyXmlReader bodyReader) { @@ -31,7 +30,7 @@ public class NotesXmlReader { public InternalResult> readElement(XmlElement element) { Iterable elements = filter(element.findChildren("w:" + tagName), this::isNoteElement); - return InternalResult.flatten(lazyMap(elements, this::readNoteElement)); + return InternalResult.flatMap(elements, this::readNoteElement); } private boolean isNoteElement(XmlElement element) { diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java b/src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java index 1045054..d61f323 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/ReadResult.java @@ -10,15 +10,13 @@ import java.util.function.Function; import static org.zwobble.mammoth.internal.util.MammothIterables.lazyConcat; import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFlatMap; -import static org.zwobble.mammoth.internal.util.MammothLists.eagerFlatMap; -import static org.zwobble.mammoth.internal.util.MammothLists.list; -import static org.zwobble.mammoth.internal.util.MammothLists.toList; +import static org.zwobble.mammoth.internal.util.MammothLists.*; public class ReadResult { public static final ReadResult EMPTY_SUCCESS = success(list()); - public static ReadResult flatten(Iterable results) { - results = toList(results); + public static ReadResult flatMap(Iterable iterable, Function function) { + List results = eagerMap(iterable, function); return new ReadResult( eagerFlatMap(results, result -> result.elements), eagerFlatMap(results, result -> result.extra), diff --git a/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java b/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java index 650446f..445d684 100644 --- a/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java +++ b/src/main/java/org/zwobble/mammoth/internal/results/InternalResult.java @@ -14,11 +14,10 @@ import static org.zwobble.mammoth.internal.util.MammothIterables.lazyConcat; import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFlatMap; import static org.zwobble.mammoth.internal.util.MammothLists.eagerMap; import static org.zwobble.mammoth.internal.util.MammothLists.list; -import static org.zwobble.mammoth.internal.util.MammothLists.toList; public class InternalResult { - public static InternalResult> flatten(Iterable> results) { - results = toList(results); + public static InternalResult> flatMap(Iterable iterable, Function> function) { + List> results = eagerMap(iterable, function); return new InternalResult<>( eagerMap(results, result -> result.value), lazyFlatMap(results, result -> result.warnings)); -- cgit v1.2.3