From 97d89378d24b46742c38c1b74159537da45769ad Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 4 Nov 2017 11:53:19 +0000 Subject: Add parser for table style mappings --- .../styles/parsing/DocumentMatcherParser.java | 6 ++++ .../parsing/DocumentMatcherParsingTests.java | 36 ++++++++++++++++++---- 2 files changed, 36 insertions(+), 6 deletions(-) (limited to 'src') 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 9f8d32b..c49096b 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 @@ -52,6 +52,12 @@ public class DocumentMatcherParser { return new RunMatcher(styleId, styleName); } + public static TableMatcher parseTableMatcher(TokenIterator tokens) { + Optional styleId = parseStyleId(tokens); + Optional styleName = parseStyleName(tokens); + return new TableMatcher(styleId, styleName); + } + private static Optional parseStyleId(TokenIterator tokens) { return TokenParser.parseClassName(tokens); } diff --git a/src/test/java/org/zwobble/mammoth/tests/styles/parsing/DocumentMatcherParsingTests.java b/src/test/java/org/zwobble/mammoth/tests/styles/parsing/DocumentMatcherParsingTests.java index ad8780a..c7a5cb2 100644 --- a/src/test/java/org/zwobble/mammoth/tests/styles/parsing/DocumentMatcherParsingTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/styles/parsing/DocumentMatcherParsingTests.java @@ -1,10 +1,7 @@ package org.zwobble.mammoth.tests.styles.parsing; import org.junit.Test; -import org.zwobble.mammoth.internal.styles.EqualToStringMatcher; -import org.zwobble.mammoth.internal.styles.ParagraphMatcher; -import org.zwobble.mammoth.internal.styles.RunMatcher; -import org.zwobble.mammoth.internal.styles.StartsWithStringMatcher; +import org.zwobble.mammoth.internal.styles.*; import org.zwobble.mammoth.internal.styles.parsing.DocumentMatcherParser; import org.zwobble.mammoth.internal.styles.parsing.StyleMappingTokeniser; import org.zwobble.mammoth.internal.styles.parsing.TokenIterator; @@ -79,15 +76,42 @@ public class DocumentMatcherParsingTests { deepEquals(RunMatcher.styleName("Heading 1 Char"))); } + @Test + public void readsPlainTable() { + assertThat( + parseTableMatcher("table"), + deepEquals(TableMatcher.ANY)); + } + + @Test + public void readsTableWithStyleId() { + assertThat( + parseTableMatcher("table.TableNormal"), + deepEquals(TableMatcher.styleId("TableNormal"))); + } + + @Test + public void readsTableWithStyleName() { + assertThat( + parseTableMatcher("table[style-name='Normal Table']"), + deepEquals(TableMatcher.styleName("Normal Table"))); + } + private ParagraphMatcher parseParagraphMatcher(String input) { - TokenIterator tokens = StyleMappingTokeniser.tokenise(input); + TokenIterator tokens = StyleMappingTokeniser.tokenise(input); tokens.skip(TokenType.IDENTIFIER, "p"); return DocumentMatcherParser.parseParagraphMatcher(tokens); } private RunMatcher parseRunMatcher(String input) { - TokenIterator tokens = StyleMappingTokeniser.tokenise(input); + TokenIterator tokens = StyleMappingTokeniser.tokenise(input); tokens.skip(TokenType.IDENTIFIER, "r"); return DocumentMatcherParser.parseRunMatcher(tokens); } + + private TableMatcher parseTableMatcher(String input) { + TokenIterator tokens = StyleMappingTokeniser.tokenise(input); + tokens.skip(TokenType.IDENTIFIER, "table"); + return DocumentMatcherParser.parseTableMatcher(tokens); + } } -- cgit v1.2.3