diff options
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java | 6 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/styles/parsing/DocumentMatcherParsingTests.java | 36 |
2 files changed, 36 insertions, 6 deletions
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<TokenType> tokens) { + Optional<String> styleId = parseStyleId(tokens); + Optional<StringMatcher> styleName = parseStyleName(tokens); + return new TableMatcher(styleId, styleName); + } + private static Optional<String> parseStyleId(TokenIterator<TokenType> 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<TokenType> tokens = StyleMappingTokeniser.tokenise(input); tokens.skip(TokenType.IDENTIFIER, "p"); return DocumentMatcherParser.parseParagraphMatcher(tokens); } private RunMatcher parseRunMatcher(String input) { - TokenIterator tokens = StyleMappingTokeniser.tokenise(input); + TokenIterator<TokenType> tokens = StyleMappingTokeniser.tokenise(input); tokens.skip(TokenType.IDENTIFIER, "r"); return DocumentMatcherParser.parseRunMatcher(tokens); } + + private TableMatcher parseTableMatcher(String input) { + TokenIterator<TokenType> tokens = StyleMappingTokeniser.tokenise(input); + tokens.skip(TokenType.IDENTIFIER, "table"); + return DocumentMatcherParser.parseTableMatcher(tokens); + } } |
