From 84f30b611589ef7141ab7e928604c2d2fe6d6d1c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 25 Feb 2016 19:42:37 +0000 Subject: Allow bold runs to be configured using style mapping --- .../java/org/zwobble/mammoth/internal/DocumentToHtml.java | 2 +- .../java/org/zwobble/mammoth/internal/styles/StyleMap.java | 8 ++++++++ .../org/zwobble/mammoth/internal/styles/StyleMapBuilder.java | 2 +- .../java/org/zwobble/mammoth/tests/DocumentToHtmlTests.java | 11 ++++++++++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java index 16210cd..5270ea3 100644 --- a/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java +++ b/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java @@ -128,7 +128,7 @@ public class DocumentToHtml { nodes = list(Html.collapsibleElement("em", nodes)); } if (run.isBold()) { - nodes = list(Html.collapsibleElement("strong", nodes)); + nodes = styleMap.getBold().orElse(HtmlPath.collapsibleElement("strong")).wrap(nodes); } HtmlPath mapping = styleMap.getRunHtmlPath(run) .orElseGet(() -> { 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 b181074..2a790f0 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java @@ -16,17 +16,20 @@ public class StyleMap { public static final StyleMap EMPTY = new StyleMapBuilder().build(); + private final Optional bold; private final Optional underline; private final Optional strikethrough; private final List> paragraphStyles; private final List> runStyles; public StyleMap( + Optional bold, Optional underline, Optional strikethrough, List> paragraphStyles, List> runStyles) { + this.bold = bold; this.underline = underline; this.strikethrough = strikethrough; this.paragraphStyles = paragraphStyles; @@ -36,12 +39,17 @@ public class StyleMap { public StyleMap update(StyleMap styleMap) { // TODO: add appropriate tests return new StyleMap( + MammothOptionals.first(styleMap.bold, bold), MammothOptionals.first(styleMap.underline, underline), MammothOptionals.first(styleMap.strikethrough, strikethrough), MammothLists.concat(styleMap.paragraphStyles, paragraphStyles), MammothLists.concat(styleMap.runStyles, runStyles)); } + public Optional getBold() { + return bold; + } + 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 bc6efac..ab024a9 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(underline, strikethrough, paragraphStyles.build(), runStyles.build()); + return new StyleMap(bold, 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 27bee50..32e8702 100644 --- a/src/test/java/org/zwobble/mammoth/tests/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/DocumentToHtmlTests.java @@ -109,12 +109,21 @@ public class DocumentToHtmlTests { } @Test - public void boldRunsAreWrappedInStrongTags() { + public void boldRunsAreWrappedInStrongTagsByDefault() { assertThat( convertToHtml(make(a(RUN, with(BOLD, true), with(CHILDREN, list(new Text("Hello")))))), deepEquals(list(Html.collapsibleElement("strong", list(Html.text("Hello")))))); } + @Test + public void boldRunsCanBeMappedUsingStyleMapping() { + assertThat( + convertToHtml( + make(a(RUN, with(BOLD, true), with(CHILDREN, list(new Text("Hello"))))), + StyleMap.builder().bold(HtmlPath.element("em")).build()), + deepEquals(list(Html.element("em", list(Html.text("Hello")))))); + } + @Test public void italicRunsAreWrappedInEmphasisTags() { assertThat( -- cgit v1.2.3