diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-11-28 16:21:49 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-11-28 16:21:49 +0000 |
| commit | dc6e1277e8255a37727951b78ba5c8fd52de12ed (patch) | |
| tree | 8f95b495bed9a411efacd80dce3710ec4459c9ce /src | |
| parent | b6fb987093ff794252b578ad3138baa20e8257c1 (diff) | |
Use break style maps in document conversion
Diffstat (limited to 'src')
4 files changed, 30 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java index c252683..cfa4f56 100644 --- a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java +++ b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java @@ -187,11 +187,15 @@ public class DocumentToHtml { @Override public List<HtmlNode> visit(Break breakElement) { - if (breakElement.getType() == Break.Type.LINE) { - return list(Html.element("br")); - } else { - return list(); - } + HtmlPath mapping = styleMap.getBreakHtmlPath(breakElement) + .orElseGet(() -> { + if (breakElement.getType() == Break.Type.LINE) { + return HtmlPath.element("br"); + } else { + return HtmlPath.EMPTY; + } + }); + return mapping.wrap(() -> list()).get(); } @Override 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 0e8ed6d..9856d70 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java @@ -96,4 +96,9 @@ public class StyleMap { return tryFind(runStyles, styleMapping -> styleMapping.matches(run)) .map(StyleMapping::getHtmlPath); } + + public Optional<HtmlPath> getBreakHtmlPath(Break breakElement) { + return tryFind(breakStyles, styleMapping -> styleMapping.matches(breakElement)) + .map(StyleMapping::getHtmlPath); + } } 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 2d66f2a..4972883 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java @@ -61,6 +61,11 @@ public class StyleMapBuilder { return this; } + public StyleMapBuilder mapBreak(BreakMatcher matcher, HtmlPath path) { + breakStyles.add(new StyleMapping<>(matcher, path)); + return this; + } + public StyleMap build() { return new StyleMap(bold, italic, underline, strikethrough, commentReference, paragraphStyles, runStyles, breakStyles); } diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java index 2fc752c..20b6672 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java @@ -210,6 +210,17 @@ public class DocumentToHtmlTests { } @Test + public void breaksCanBeMappedUsingStyleMappings() { + assertThat( + convertToHtml( + Break.PAGE_BREAK, + StyleMap.builder().mapBreak(BreakMatcher.PAGE_BREAK, HtmlPath.element("div")).build() + ), + deepEquals(list(Html.element("div"))) + ); + } + + @Test public void tableIsConvertedToHtmlTable() { assertThat( convertToHtml(new Table(list( |
