From 8d41aebcbf5f06c3a9c15a9b017a01b8a5f779cf Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 25 Feb 2016 19:44:37 +0000 Subject: Allow italic runs to be configured using style mapping --- src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java | 2 +- src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java | 8 ++++++++ .../org/zwobble/mammoth/internal/styles/StyleMapBuilder.java | 2 +- src/test/java/org/zwobble/mammoth/tests/DocumentToHtmlTests.java | 9 +++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java index 5270ea3..11869e0 100644 --- a/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java +++ b/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java @@ -125,7 +125,7 @@ public class DocumentToHtml { nodes = list(Html.collapsibleElement("sup", nodes)); } if (run.isItalic()) { - nodes = list(Html.collapsibleElement("em", nodes)); + nodes = styleMap.getItalic().orElse(HtmlPath.collapsibleElement("em")).wrap(nodes); } if (run.isBold()) { nodes = styleMap.getBold().orElse(HtmlPath.collapsibleElement("strong")).wrap(nodes); diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java index 2a790f0..537b347 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java @@ -17,6 +17,7 @@ public class StyleMap { public static final StyleMap EMPTY = new StyleMapBuilder().build(); private final Optional bold; + private final Optional italic; private final Optional underline; private final Optional strikethrough; private final List> paragraphStyles; @@ -24,12 +25,14 @@ public class StyleMap { public StyleMap( Optional bold, + Optional italic, Optional underline, Optional strikethrough, List> paragraphStyles, List> runStyles) { this.bold = bold; + this.italic = italic; this.underline = underline; this.strikethrough = strikethrough; this.paragraphStyles = paragraphStyles; @@ -40,6 +43,7 @@ public class StyleMap { // TODO: add appropriate tests return new StyleMap( MammothOptionals.first(styleMap.bold, bold), + MammothOptionals.first(styleMap.italic, italic), MammothOptionals.first(styleMap.underline, underline), MammothOptionals.first(styleMap.strikethrough, strikethrough), MammothLists.concat(styleMap.paragraphStyles, paragraphStyles), @@ -50,6 +54,10 @@ public class StyleMap { return bold; } + public Optional getItalic() { + return italic; + } + public Optional getUnderline() { return underline; } diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java index ab024a9..34a72ba 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java @@ -52,6 +52,6 @@ public class StyleMapBuilder { } public StyleMap build() { - return new StyleMap(bold, underline, strikethrough, paragraphStyles.build(), runStyles.build()); + return new StyleMap(bold, italic, underline, strikethrough, paragraphStyles.build(), runStyles.build()); } } diff --git a/src/test/java/org/zwobble/mammoth/tests/DocumentToHtmlTests.java b/src/test/java/org/zwobble/mammoth/tests/DocumentToHtmlTests.java index 32e8702..0783ac2 100644 --- a/src/test/java/org/zwobble/mammoth/tests/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/DocumentToHtmlTests.java @@ -131,6 +131,15 @@ public class DocumentToHtmlTests { deepEquals(list(Html.collapsibleElement("em", list(Html.text("Hello")))))); } + @Test + public void italicRunsCanBeMappedUsingStyleMapping() { + assertThat( + convertToHtml( + make(a(RUN, with(ITALIC, true), with(CHILDREN, list(new Text("Hello"))))), + StyleMap.builder().italic(HtmlPath.element("strong")).build()), + deepEquals(list(Html.element("strong", list(Html.text("Hello")))))); + } + @Test public void underliningIsIgnoredByDefault() { assertThat( -- cgit v1.2.3