aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-24 08:32:15 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-24 08:32:15 +0000
commit05ff9e63fb5ab95e20ebe403755ebfb1f8780c25 (patch)
tree9209dfe47ff672cd0db500cdb25da99cef906955 /src/main/java/org/zwobble/mammoth/internal
parent3e2786a004eddf968a5fa7d5a92dff5b1b5f7734 (diff)
Turn Mammoth into a non-static class
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/DocumentConverter.java16
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/DocumentToHtmlOptions.java41
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/DefaultStyles.java49
3 files changed, 98 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/DocumentConverter.java b/src/main/java/org/zwobble/mammoth/internal/DocumentConverter.java
index 5aa3c08..ab28651 100644
--- a/src/main/java/org/zwobble/mammoth/internal/DocumentConverter.java
+++ b/src/main/java/org/zwobble/mammoth/internal/DocumentConverter.java
@@ -24,8 +24,8 @@ import static org.zwobble.mammoth.internal.util.MammothLists.*;
import static org.zwobble.mammoth.internal.util.MammothMaps.map;
public class DocumentConverter {
- public static Result<List<HtmlNode>> convertToHtml(String idPrefix, boolean preserveEmptyParagraphs, StyleMap styleMap, Document document) {
- DocumentConverter documentConverter = new DocumentConverter(idPrefix, preserveEmptyParagraphs, styleMap);
+ public static Result<List<HtmlNode>> convertToHtml(Document document, DocumentToHtmlOptions options) {
+ DocumentConverter documentConverter = new DocumentConverter(options);
return new Result<>(
documentConverter.convertToHtml(document),
documentConverter.warnings.build());
@@ -38,8 +38,8 @@ public class DocumentConverter {
reference -> document.getNotes().findNote(reference.getNoteType(), reference.getNoteId()).get()));
}
- public static Result<List<HtmlNode>> convertToHtml(String idPrefix, boolean preserveEmptyParagraphs, StyleMap styleMap, DocumentElement element) {
- DocumentConverter documentConverter = new DocumentConverter(idPrefix, preserveEmptyParagraphs, styleMap);
+ public static Result<List<HtmlNode>> convertToHtml(DocumentElement element, DocumentToHtmlOptions options) {
+ DocumentConverter documentConverter = new DocumentConverter(options);
return new Result<>(
documentConverter.convertToHtml(element),
documentConverter.warnings.build());
@@ -51,10 +51,10 @@ public class DocumentConverter {
private final List<NoteReference> noteReferences = new ArrayList<>();
private final ImmutableList.Builder<Warning> warnings = ImmutableList.builder();
- private DocumentConverter(String idPrefix, boolean preserveEmptyParagraphs, StyleMap styleMap) {
- this.idPrefix = idPrefix;
- this.preserveEmptyParagraphs = preserveEmptyParagraphs;
- this.styleMap = styleMap;
+ private DocumentConverter(DocumentToHtmlOptions options) {
+ this.idPrefix = options.idPrefix();
+ this.preserveEmptyParagraphs = options.shouldPreserveEmptyParagraphs();
+ this.styleMap = options.styleMap();
}
private List<HtmlNode> convertToHtml(Document document) {
diff --git a/src/main/java/org/zwobble/mammoth/internal/DocumentToHtmlOptions.java b/src/main/java/org/zwobble/mammoth/internal/DocumentToHtmlOptions.java
new file mode 100644
index 0000000..f7cbf0d
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/DocumentToHtmlOptions.java
@@ -0,0 +1,41 @@
+package org.zwobble.mammoth.internal;
+
+import org.zwobble.mammoth.internal.styles.StyleMap;
+
+public class DocumentToHtmlOptions {
+ public static final DocumentToHtmlOptions DEFAULT = new DocumentToHtmlOptions("", false, StyleMap.EMPTY);
+
+ private final String idPrefix;
+ private final boolean preserveEmptyParagraphs;
+ private final StyleMap styleMap;
+
+ public DocumentToHtmlOptions(String idPrefix, boolean preserveEmptyParagraphs, StyleMap styleMap) {
+ this.idPrefix = idPrefix;
+ this.preserveEmptyParagraphs = preserveEmptyParagraphs;
+ this.styleMap = styleMap;
+ }
+
+ public DocumentToHtmlOptions idPrefix(String prefix) {
+ return new DocumentToHtmlOptions(prefix, preserveEmptyParagraphs, styleMap);
+ }
+
+ public DocumentToHtmlOptions preserveEmptyParagraphs() {
+ return new DocumentToHtmlOptions(idPrefix, true, styleMap);
+ }
+
+ public DocumentToHtmlOptions styleMap(StyleMap styleMap) {
+ return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, styleMap);
+ }
+
+ public String idPrefix() {
+ return idPrefix;
+ }
+
+ public boolean shouldPreserveEmptyParagraphs() {
+ return preserveEmptyParagraphs;
+ }
+
+ public StyleMap styleMap() {
+ return styleMap;
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/DefaultStyles.java b/src/main/java/org/zwobble/mammoth/internal/styles/DefaultStyles.java
new file mode 100644
index 0000000..4fcba76
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/DefaultStyles.java
@@ -0,0 +1,49 @@
+package org.zwobble.mammoth.internal.styles;
+
+import com.google.common.collect.ImmutableList;
+import org.zwobble.mammoth.internal.styles.parsing.StyleMapParser;
+
+public class DefaultStyles {
+ public static final StyleMap DEFAULT_STYLE_MAP = StyleMapParser.parse(ImmutableList.of(
+ "p.Heading1 => h1:fresh",
+ "p.Heading2 => h2:fresh",
+ "p.Heading3 => h3:fresh",
+ "p.Heading4 => h4:fresh",
+ "p[style-name='Heading 1'] => h1:fresh",
+ "p[style-name='Heading 2'] => h2:fresh",
+ "p[style-name='Heading 3'] => h3:fresh",
+ "p[style-name='Heading 4'] => h4:fresh",
+ "p[style-name='heading 1'] => h1:fresh",
+ "p[style-name='heading 2'] => h2:fresh",
+ "p[style-name='heading 3'] => h3:fresh",
+ "p[style-name='heading 4'] => h4:fresh",
+ "p[style-name='heading 4'] => h4:fresh",
+
+ "r[style-name='Strong'] => strong",
+
+ "p[style-name='footnote text'] => p",
+ "r[style-name='footnote reference'] =>",
+ "p[style-name='endnote text'] => p",
+ "r[style-name='endnote reference'] =>",
+
+ // LibreOffice
+ "p[style-name='Footnote'] => p",
+ "r[style-name='Footnote anchor'] =>",
+ "p[style-name='Endnote'] => p",
+ "r[style-name='Endnote anchor'] =>",
+
+ "p:unordered-list(1) => ul > li:fresh",
+ "p:unordered-list(2) => ul|ol > li > ul > li:fresh",
+ "p:unordered-list(3) => ul|ol > li > ul|ol > li > ul > li:fresh",
+ "p:unordered-list(4) => ul|ol > li > ul|ol > li > ul|ol > li > ul > li:fresh",
+ "p:unordered-list(5) => ul|ol > li > ul|ol > li > ul|ol > li > ul|ol > li > ul > li:fresh",
+ "p:ordered-list(1) => ol > li:fresh",
+ "p:ordered-list(2) => ul|ol > li > ol > li:fresh",
+ "p:ordered-list(3) => ul|ol > li > ul|ol > li > ol > li:fresh",
+ "p:ordered-list(4) => ul|ol > li > ul|ol > li > ul|ol > li > ol > li:fresh",
+ "p:ordered-list(5) => ul|ol > li > ul|ol > li > ul|ol > li > ul|ol > li > ol > li:fresh",
+
+ "r[style-name='Hyperlink'] =>",
+
+ "p[style-name='Normal'] => p:fresh"));
+}