aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-26 09:51:39 +0000
committerMichael Williamson <mike@zwobble.org>2016-03-26 09:51:39 +0000
commit70e00d6d98136e00fd8c8482f89427b7e602c723 (patch)
treeff91f6800977c946c1502ffeb29cc2e210e24d44 /src/main/java/org
parent08af6720105bbb3cf2061e98727ba5ca67da3144 (diff)
Remove usages of Iterables.filter
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java23
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java6
6 files changed, 37 insertions, 9 deletions
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 2770984..c8cdc1c 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
@@ -14,9 +14,9 @@ import java.util.Optional;
import java.util.Set;
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.lazyFilter;
import static org.zwobble.mammoth.internal.util.MammothLists.list;
import static org.zwobble.mammoth.internal.util.MammothStrings.trimLeft;
@@ -171,7 +171,7 @@ public class BodyXmlReader {
}
public ReadResult readElements(Iterable<XmlNode> nodes) {
- return ReadResult.flatMap(filter(nodes, XmlElement.class), this::readElement);
+ return ReadResult.flatMap(lazyFilter(nodes, XmlElement.class), this::readElement);
}
private ReadResult readParagraph(XmlElement element) {
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 235535e..b75df9b 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java
@@ -7,7 +7,7 @@ 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.lazyFilter;
public class NotesXmlReader {
public static NotesXmlReader footnote(BodyXmlReader bodyReader) {
@@ -29,7 +29,7 @@ public class NotesXmlReader {
}
public InternalResult<List<Note>> readElement(XmlElement element) {
- Iterable<XmlElement> elements = filter(element.findChildren("w:" + tagName), this::isNoteElement);
+ Iterable<XmlElement> elements = lazyFilter(element.findChildren("w:" + tagName), this::isNoteElement);
return InternalResult.flatMap(elements, this::readNoteElement);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java b/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
index 9b468fe..81a16af 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
@@ -7,7 +7,7 @@ import org.zwobble.mammoth.internal.xml.XmlElementList;
import java.util.Map;
import java.util.Optional;
-import static com.google.common.collect.Iterables.filter;
+import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFilter;
import static org.zwobble.mammoth.internal.util.MammothMaps.entry;
import static org.zwobble.mammoth.internal.util.MammothMaps.toMap;
@@ -21,7 +21,7 @@ public class StylesXml {
private static Map<String, Style> readStyles(XmlElementList styleElements, String styleType) {
return toMap(
- filter(styleElements, styleElement -> styleElement.getAttribute("w:type").equals(styleType)),
+ lazyFilter(styleElements, styleElement -> styleElement.getAttribute("w:type").equals(styleType)),
StylesXml::readStyle);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java b/src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java
index c0231e0..fececa3 100644
--- a/src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java
+++ b/src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java
@@ -65,6 +65,29 @@ public class MammothIterables {
};
}
+ public static <T> Iterable<T> lazyFilter(Iterable<T> iterables, Predicate<T> predicate) {
+ return new Iterable<T>() {
+ @Override
+ public Iterator<T> iterator() {
+ return stream(iterables)
+ .filter(predicate)
+ .iterator();
+ }
+ };
+ }
+
+ public static <T, R> Iterable<R> lazyFilter(Iterable<T> iterables, Class<R> clazz) {
+ return new Iterable<R>() {
+ @Override
+ @SuppressWarnings("unchecked")
+ public Iterator<R> iterator() {
+ return (Iterator<R>) stream(iterables)
+ .filter(clazz::isInstance)
+ .iterator();
+ }
+ };
+ }
+
private static <T, R> Iterator<R> map(Iterator<T> iterator, Function<T, R> function) {
return new Iterator<R>() {
@Override
diff --git a/src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java b/src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java
index 3519cd2..7f5b83c 100644
--- a/src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java
+++ b/src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java
@@ -6,6 +6,7 @@ import com.google.common.collect.Ordering;
import java.util.List;
import java.util.function.Function;
+import java.util.function.Predicate;
import java.util.stream.Collectors;
import static org.zwobble.mammoth.internal.util.MammothIterables.stream;
@@ -35,6 +36,10 @@ public class MammothLists {
return ImmutableList.copyOf(Iterables.concat(first, second));
}
+ public static <T> List<T> eagerFilter(Iterable<T> iterable, Predicate<T> predicate) {
+ return stream(iterable).filter(predicate).collect(Collectors.toList());
+ }
+
public static <T, R> List<R> eagerMap(Iterable<T> iterable, Function<T, R> function) {
return stream(iterable).map(function).collect(Collectors.toList());
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java
index f8a94f2..ad6f8f3 100644
--- a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java
+++ b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java
@@ -6,8 +6,8 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
-import static com.google.common.collect.Iterables.filter;
import static org.zwobble.mammoth.internal.util.MammothIterables.getFirst;
+import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFilter;
import static org.zwobble.mammoth.internal.util.MammothIterables.lazyMap;
import static org.zwobble.mammoth.internal.util.MammothMaps.lookup;
@@ -84,8 +84,8 @@ public class XmlElement implements XmlNode, XmlElementLike {
}
private Iterable<XmlElement> findChildrenIterable(String name) {
- return filter(
- filter(children, XmlElement.class),
+ return lazyFilter(
+ lazyFilter(children, XmlElement.class),
child -> child.getName().equals(name));
}
}