From 0dc3a12affc2e46c1a0df2899cf51a1ae3fdbd61 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 23 Feb 2016 21:13:28 +0000 Subject: Use default style map from JavaScript/Python implementations --- src/main/java/org/zwobble/mammoth/Mammoth.java | 64 +++++++++++++++------- .../mammoth/styles/parsing/StyleMapParser.java | 8 +-- 2 files changed, 47 insertions(+), 25 deletions(-) (limited to 'src/main/java/org/zwobble') diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java index e89e282..b00d5ca 100644 --- a/src/main/java/org/zwobble/mammoth/Mammoth.java +++ b/src/main/java/org/zwobble/mammoth/Mammoth.java @@ -1,6 +1,7 @@ package org.zwobble.mammoth; import com.google.common.base.Function; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import org.zwobble.mammoth.documents.DocumentElement; import org.zwobble.mammoth.documents.HasChildren; @@ -12,6 +13,7 @@ import org.zwobble.mammoth.docx.ZippedDocxFile; import org.zwobble.mammoth.html.Html; import org.zwobble.mammoth.results.Result; import org.zwobble.mammoth.styles.*; +import org.zwobble.mammoth.styles.parsing.StyleMapParser; import org.zwobble.mammoth.util.Casts; import java.io.File; @@ -46,26 +48,48 @@ public class Mammoth { } } - private static final StyleMap DEFAULT_STYLE_MAP = StyleMap.builder() - .mapParagraph(ParagraphMatcher.styleName("footnote text"), HtmlPath.element("p")) - .mapRun(RunMatcher.styleName("footnote reference"), HtmlPath.EMPTY) - .mapParagraph(ParagraphMatcher.styleName("endnote text"), HtmlPath.element("p")) - .mapRun(RunMatcher.styleName("endnote reference"), HtmlPath.EMPTY) - - .mapParagraph(ParagraphMatcher.styleName("Footnote"), HtmlPath.element("p")) - .mapRun(RunMatcher.styleName("Footnote anchor"), HtmlPath.EMPTY) - .mapParagraph(ParagraphMatcher.styleName("Endnote"), HtmlPath.element("p")) - .mapRun(RunMatcher.styleName("Endnote anchor"), HtmlPath.EMPTY) - - .mapParagraph( - ParagraphMatcher.unorderedList("0"), - new HtmlPath(list( - HtmlPathElement.collapsible("ul"), - HtmlPathElement.fresh("li")))) - - .mapRun(RunMatcher.styleName("Hyperlink"), HtmlPath.EMPTY) - .mapParagraph(ParagraphMatcher.styleName("Normal"), HtmlPath.element("p")) - .build(); + private 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")); public static Result convertToHtml(InputStream stream) throws IOException { return convertToHtml(stream, Options.DEFAULT); diff --git a/src/main/java/org/zwobble/mammoth/styles/parsing/StyleMapParser.java b/src/main/java/org/zwobble/mammoth/styles/parsing/StyleMapParser.java index 595eab1..ab453cd 100644 --- a/src/main/java/org/zwobble/mammoth/styles/parsing/StyleMapParser.java +++ b/src/main/java/org/zwobble/mammoth/styles/parsing/StyleMapParser.java @@ -10,8 +10,10 @@ import static java.util.Arrays.asList; public class StyleMapParser { public static StyleMap parse(String input) { - List lines = asList(input.split("\\r?\\n")); + return parse(asList(input.split("\\r?\\n"))); + } + public static StyleMap parse(List lines) { Var styleMap = new Var<>(StyleMap.builder()); for (String line : lines) { handleLine(styleMap, line); @@ -29,8 +31,4 @@ public class StyleMapParser { } Parsing.parse(StyleMappingParser.class, parser -> parser.StyleMapping(styleMap), line); } - - private static boolean isSignificantLine(String line) { - return !line.startsWith("#") && !line.trim().isEmpty(); - } } -- cgit v1.2.3