aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/mammoth/DocumentConverter.java11
-rw-r--r--src/main/java/org/zwobble/mammoth/Mammoth.java12
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/Style.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/styles/StyleMap.java9
4 files changed, 31 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/mammoth/DocumentConverter.java b/src/main/java/org/zwobble/mammoth/DocumentConverter.java
index 294e403..5cf8c9d 100644
--- a/src/main/java/org/zwobble/mammoth/DocumentConverter.java
+++ b/src/main/java/org/zwobble/mammoth/DocumentConverter.java
@@ -9,6 +9,7 @@ import org.zwobble.mammoth.html.Html;
import org.zwobble.mammoth.html.HtmlNode;
import org.zwobble.mammoth.results.Result;
import org.zwobble.mammoth.results.Warning;
+import org.zwobble.mammoth.styles.HtmlPath;
import org.zwobble.mammoth.styles.StyleMap;
import org.zwobble.mammoth.util.MammothLists;
@@ -18,6 +19,7 @@ import java.util.Base64;
import java.util.List;
import java.util.Map;
+import static org.zwobble.mammoth.results.Warning.warning;
import static org.zwobble.mammoth.util.MammothLists.*;
import static org.zwobble.mammoth.util.MammothMaps.map;
@@ -98,7 +100,14 @@ public class DocumentConverter {
public List<HtmlNode> visit(Paragraph paragraph) {
List<HtmlNode> content = convertChildrenToHtml(paragraph);
List<HtmlNode> children = preserveEmptyParagraphs ? cons(Html.FORCE_WRITE, content) : content;
- return styleMap.getParagraphStyleMapping(paragraph).wrap(children);
+ HtmlPath mapping = styleMap.getParagraphHtmlPath(paragraph)
+ .orElseGet(() -> {
+ if (paragraph.getStyle().isPresent()) {
+ warnings.add(warning("Unrecognised paragraph style: " + paragraph.getStyle().get().describe()));
+ }
+ return HtmlPath.element("p");
+ });
+ return mapping.wrap(children);
}
@Override
diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java
index b6bba55..4421a17 100644
--- a/src/main/java/org/zwobble/mammoth/Mammoth.java
+++ b/src/main/java/org/zwobble/mammoth/Mammoth.java
@@ -10,6 +10,8 @@ import org.zwobble.mammoth.docx.DocxFile;
import org.zwobble.mammoth.docx.ZippedDocxFile;
import org.zwobble.mammoth.html.Html;
import org.zwobble.mammoth.results.Result;
+import org.zwobble.mammoth.styles.HtmlPath;
+import org.zwobble.mammoth.styles.ParagraphMatcher;
import org.zwobble.mammoth.styles.StyleMap;
import org.zwobble.mammoth.util.Casts;
@@ -42,6 +44,14 @@ public class Mammoth {
}
}
+ private static final StyleMap DEFAULT_STYLE_MAP = StyleMap.builder()
+ .mapParagraph(ParagraphMatcher.styleName("footnote text"), HtmlPath.element("p"))
+ .mapParagraph(ParagraphMatcher.styleName("endnote text"), HtmlPath.element("p"))
+ .mapParagraph(ParagraphMatcher.styleName("Footnote"), HtmlPath.element("p"))
+ .mapParagraph(ParagraphMatcher.styleName("Endnote"), HtmlPath.element("p"))
+ .mapParagraph(ParagraphMatcher.styleName("Normal"), HtmlPath.element("p"))
+ .build();
+
public static Result<String> convertToHtml(File file) {
return convertToHtml(file, Options.DEFAULT);
}
@@ -49,7 +59,7 @@ public class Mammoth {
public static Result<String> convertToHtml(File file, Options options) {
return withDocxFile(file, zipFile ->
readDocument(zipFile)
- .flatMap(nodes -> DocumentConverter.convertToHtml(options.idPrefix, options.preserveEmptyParagraphs, StyleMap.EMPTY, nodes))
+ .flatMap(nodes -> DocumentConverter.convertToHtml(options.idPrefix, options.preserveEmptyParagraphs, DEFAULT_STYLE_MAP, nodes))
.map(Html::stripEmpty)
.map(Html::collapse)
.map(Html::write));
diff --git a/src/main/java/org/zwobble/mammoth/documents/Style.java b/src/main/java/org/zwobble/mammoth/documents/Style.java
index 82a25de..2ce6edf 100644
--- a/src/main/java/org/zwobble/mammoth/documents/Style.java
+++ b/src/main/java/org/zwobble/mammoth/documents/Style.java
@@ -18,4 +18,9 @@ public class Style {
public Optional<String> getName() {
return name;
}
+
+ public String describe() {
+ String styleIdDescription = "Style ID: " + styleId;
+ return this.name.map(name -> name + " (" + styleIdDescription + ")").orElse(styleIdDescription);
+ }
}
diff --git a/src/main/java/org/zwobble/mammoth/styles/StyleMap.java b/src/main/java/org/zwobble/mammoth/styles/StyleMap.java
index e498246..7aae7df 100644
--- a/src/main/java/org/zwobble/mammoth/styles/StyleMap.java
+++ b/src/main/java/org/zwobble/mammoth/styles/StyleMap.java
@@ -4,6 +4,7 @@ import com.google.common.collect.Iterables;
import org.zwobble.mammoth.documents.Paragraph;
import java.util.List;
+import java.util.Optional;
public class StyleMap {
public static StyleMapBuilder builder() {
@@ -30,9 +31,9 @@ public class StyleMap {
return strikethrough;
}
- public HtmlPath getParagraphStyleMapping(Paragraph paragraph) {
- return Iterables.tryFind(paragraphStyles, styleMapping -> styleMapping.matches(paragraph))
- .transform(StyleMapping::getHtmlPath)
- .or(HtmlPath.element("p"));
+ public Optional<HtmlPath> getParagraphHtmlPath(Paragraph paragraph) {
+ com.google.common.base.Optional<StyleMapping> mapping = Iterables.tryFind(paragraphStyles, styleMapping -> styleMapping.matches(paragraph));
+ return Optional.ofNullable(mapping.orNull())
+ .map(StyleMapping::getHtmlPath);
}
}