blob: c2bdff73ca602958f45d7997a2c138439ac36a05 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package org.zwobble.mammoth.internal.conversion;
import org.zwobble.mammoth.internal.documents.*;
import java.util.List;
import static org.zwobble.mammoth.internal.util.Casts.tryCast;
import static org.zwobble.mammoth.internal.util.Iterables.lazyMap;
import static org.zwobble.mammoth.internal.util.Lists.list;
public class RawText {
public static String extractRawText(Document document) {
return extractRawTextOfChildren(document);
}
private static <T> String extractRawTextOfChildren(HasChildren<T> parent) {
return extractRawText(parent.getChildren());
}
private static String extractRawText(List<DocumentElement> nodes) {
return String.join("", lazyMap(nodes, node -> extractRawText(node)));
}
public static String extractRawText(DocumentElement node) {
if (node instanceof Text) {
return ((Text) node).getValue();
} else if (node instanceof Tab) {
return "\t";
} else {
List<DocumentElement> children = tryCast(HasChildren.class, node)
.map(HasChildren::getChildren)
.orElse(list());
String suffix = tryCast(Paragraph.class, node).map(paragraph -> "\n\n").orElse("");
return extractRawText(children) + suffix;
}
}
}
|