From a55bb3b713dd4f38e95b98acbf284dc22077f7eb Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 28 Aug 2016 23:15:19 +0100 Subject: Add comment reference document matcher --- src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java | 4 ++++ .../org/zwobble/mammoth/internal/styles/StyleMapBuilder.java | 9 ++++++++- .../mammoth/internal/styles/parsing/DocumentMatcherParser.java | 2 ++ .../mammoth/tests/styles/parsing/StyleMapParserTests.java | 6 ++++++ 4 files changed, 20 insertions(+), 1 deletion(-) 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 81dfe80..eb810aa 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java @@ -21,6 +21,7 @@ public class StyleMap { private final Optional italic; private final Optional underline; private final Optional strikethrough; + private final Optional commentReference; private final List> paragraphStyles; private final List> runStyles; @@ -29,6 +30,7 @@ public class StyleMap { Optional italic, Optional underline, Optional strikethrough, + Optional commentReference, List> paragraphStyles, List> runStyles) { @@ -36,6 +38,7 @@ public class StyleMap { this.italic = italic; this.underline = underline; this.strikethrough = strikethrough; + this.commentReference = commentReference; this.paragraphStyles = paragraphStyles; this.runStyles = runStyles; } @@ -47,6 +50,7 @@ public class StyleMap { Optionals.first(styleMap.italic, italic), Optionals.first(styleMap.underline, underline), Optionals.first(styleMap.strikethrough, strikethrough), + Optionals.first(styleMap.commentReference, commentReference), Lists.eagerConcat(styleMap.paragraphStyles, paragraphStyles), Lists.eagerConcat(styleMap.runStyles, runStyles)); } 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 9935417..e834715 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java @@ -12,6 +12,7 @@ public class StyleMapBuilder { private Optional strikethrough; private Optional bold; private Optional italic; + private Optional commentReference; private final List> paragraphStyles = new ArrayList<>(); private final List> runStyles = new ArrayList<>(); @@ -20,6 +21,7 @@ public class StyleMapBuilder { this.underline = Optional.empty(); this.strikethrough = Optional.empty(); this.italic = Optional.empty(); + this.commentReference = Optional.empty(); } public StyleMapBuilder bold(HtmlPath path) { @@ -42,6 +44,11 @@ public class StyleMapBuilder { return this; } + public StyleMapBuilder commentReference(HtmlPath path) { + this.commentReference = Optional.of(path); + return this; + } + public StyleMapBuilder mapParagraph(ParagraphMatcher matcher, HtmlPath path) { paragraphStyles.add(new StyleMapping<>(matcher, path)); return this; @@ -53,6 +60,6 @@ public class StyleMapBuilder { } public StyleMap build() { - return new StyleMap(bold, italic, underline, strikethrough, paragraphStyles, runStyles); + return new StyleMap(bold, italic, underline, strikethrough, commentReference, paragraphStyles, runStyles); } } diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java index 90b9ba0..e7de55c 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java @@ -28,6 +28,8 @@ public class DocumentMatcherParser { return StyleMapBuilder::underline; case "strike": return StyleMapBuilder::strikethrough; + case "comment-reference": + return StyleMapBuilder::commentReference; default: throw new LineParseException(identifier, "Unrecognised document element: " + identifier); } diff --git a/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMapParserTests.java b/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMapParserTests.java index e76a632..d6205cd 100644 --- a/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMapParserTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMapParserTests.java @@ -53,6 +53,12 @@ public class StyleMapParserTests { assertThat(styleMap, deepEquals(StyleMap.builder().strikethrough(HtmlPath.collapsibleElement("del")).build())); } + @Test + public void canMapCommentReference() { + StyleMap styleMap = StyleMapParser.parse("comment-reference =>"); + assertThat(styleMap, deepEquals(StyleMap.builder().commentReference(HtmlPath.EMPTY).build())); + } + @Test public void blankLinesAreIgnored() { StyleMap styleMap = StyleMapParser.parse("\n\n \n\np =>\n\r\n"); -- cgit v1.2.3