summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/DocumentElementMatching.java8
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/EqualToStringMatcher.java14
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/ParagraphMatcher.java6
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/RunMatcher.java6
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/StringMatcher.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java13
6 files changed, 34 insertions, 18 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/DocumentElementMatching.java b/src/main/java/org/zwobble/mammoth/internal/styles/DocumentElementMatching.java
index a0c5aec..568a1a5 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/DocumentElementMatching.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/DocumentElementMatching.java
@@ -6,7 +6,7 @@ import java.util.Optional;
import java.util.function.BiPredicate;
class DocumentElementMatching {
- static boolean matchesStyle(Optional<String> styleId, Optional<String> styleName, Optional<Style> style) {
+ static boolean matchesStyle(Optional<String> styleId, Optional<StringMatcher> styleName, Optional<Style> style) {
return matchesStyleId(styleId, style) && matchesStyleName(styleName, style);
}
@@ -14,11 +14,11 @@ class DocumentElementMatching {
return matches(styleId, style.map(Style::getStyleId), Object::equals);
}
- private static boolean matchesStyleName(Optional<String> styleName, Optional<Style> style) {
- return matches(styleName, style.flatMap(Style::getName), String::equalsIgnoreCase);
+ private static boolean matchesStyleName(Optional<StringMatcher> styleName, Optional<Style> style) {
+ return matches(styleName, style.flatMap(Style::getName), StringMatcher::matches);
}
- static <T> boolean matches(Optional<T> required, Optional<T> actual, BiPredicate<T, T> areEqual) {
+ static <T, U> boolean matches(Optional<T> required, Optional<U> actual, BiPredicate<T, U> areEqual) {
return required
.map(requiredValue -> actual.map(actualValue -> areEqual.test(requiredValue, actualValue)).orElse(false))
.orElse(true);
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/EqualToStringMatcher.java b/src/main/java/org/zwobble/mammoth/internal/styles/EqualToStringMatcher.java
new file mode 100644
index 0000000..8c48c7e
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/EqualToStringMatcher.java
@@ -0,0 +1,14 @@
+package org.zwobble.mammoth.internal.styles;
+
+public class EqualToStringMatcher implements StringMatcher {
+ private final String value;
+
+ public EqualToStringMatcher(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public boolean matches(String value) {
+ return this.value.equalsIgnoreCase(value);
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/ParagraphMatcher.java b/src/main/java/org/zwobble/mammoth/internal/styles/ParagraphMatcher.java
index 50d5df9..82f2a78 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/ParagraphMatcher.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/ParagraphMatcher.java
@@ -13,7 +13,7 @@ public class ParagraphMatcher implements DocumentElementMatcher<Paragraph> {
}
public static ParagraphMatcher styleName(String styleName) {
- return new ParagraphMatcher(Optional.empty(), Optional.of(styleName), Optional.empty());
+ return new ParagraphMatcher(Optional.empty(), Optional.of(new EqualToStringMatcher(styleName)), Optional.empty());
}
public static ParagraphMatcher orderedList(String level) {
@@ -25,10 +25,10 @@ public class ParagraphMatcher implements DocumentElementMatcher<Paragraph> {
}
private final Optional<String> styleId;
- private final Optional<String> styleName;
+ private final Optional<StringMatcher> styleName;
private final Optional<NumberingLevel> numbering;
- public ParagraphMatcher(Optional<String> styleId, Optional<String> styleName, Optional<NumberingLevel> numbering) {
+ public ParagraphMatcher(Optional<String> styleId, Optional<StringMatcher> styleName, Optional<NumberingLevel> numbering) {
this.styleId = styleId;
this.styleName = styleName;
this.numbering = numbering;
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/RunMatcher.java b/src/main/java/org/zwobble/mammoth/internal/styles/RunMatcher.java
index 93b50dd..55a6bb0 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/RunMatcher.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/RunMatcher.java
@@ -12,13 +12,13 @@ public class RunMatcher implements DocumentElementMatcher<Run> {
}
public static RunMatcher styleName(String styleName) {
- return new RunMatcher(Optional.empty(), Optional.of(styleName));
+ return new RunMatcher(Optional.empty(), Optional.of(new EqualToStringMatcher(styleName)));
}
private final Optional<String> styleId;
- private final Optional<String> styleName;
+ private final Optional<StringMatcher> styleName;
- public RunMatcher(Optional<String> styleId, Optional<String> styleName) {
+ public RunMatcher(Optional<String> styleId, Optional<StringMatcher> styleName) {
this.styleId = styleId;
this.styleName = styleName;
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/StringMatcher.java b/src/main/java/org/zwobble/mammoth/internal/styles/StringMatcher.java
new file mode 100644
index 0000000..917abd2
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/StringMatcher.java
@@ -0,0 +1,5 @@
+package org.zwobble.mammoth.internal.styles;
+
+public interface StringMatcher {
+ boolean matches(String value);
+}
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 94004f0..ff96a55 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
@@ -1,10 +1,7 @@
package org.zwobble.mammoth.internal.styles.parsing;
import org.zwobble.mammoth.internal.documents.NumberingLevel;
-import org.zwobble.mammoth.internal.styles.HtmlPath;
-import org.zwobble.mammoth.internal.styles.ParagraphMatcher;
-import org.zwobble.mammoth.internal.styles.RunMatcher;
-import org.zwobble.mammoth.internal.styles.StyleMapBuilder;
+import org.zwobble.mammoth.internal.styles.*;
import java.math.BigInteger;
import java.util.Optional;
@@ -37,14 +34,14 @@ public class DocumentMatcherParser {
public static ParagraphMatcher parseParagraphMatcher(TokenIterator<TokenType> tokens) {
Optional<String> styleId = parseStyleId(tokens);
- Optional<String> styleName = parseStyleName(tokens);
+ Optional<StringMatcher> styleName = parseStyleName(tokens);
Optional<NumberingLevel> numbering = parseNumbering(tokens);
return new ParagraphMatcher(styleId, styleName, numbering);
}
public static RunMatcher parseRunMatcher(TokenIterator<TokenType> tokens) {
Optional<String> styleId = parseStyleId(tokens);
- Optional<String> styleName = parseStyleName(tokens);
+ Optional<StringMatcher> styleName = parseStyleName(tokens);
return new RunMatcher(styleId, styleName);
}
@@ -52,13 +49,13 @@ public class DocumentMatcherParser {
return TokenParser.parseClassName(tokens);
}
- private static Optional<String> parseStyleName(TokenIterator<TokenType> tokens) {
+ private static Optional<StringMatcher> parseStyleName(TokenIterator<TokenType> tokens) {
if (tokens.trySkip(TokenType.SYMBOL, "[")) {
tokens.skip(TokenType.IDENTIFIER, "style-name");
tokens.skip(TokenType.SYMBOL, "=");
String value = TokenParser.parseString(tokens);
tokens.skip(TokenType.SYMBOL, "]");
- return Optional.of(value);
+ return Optional.of(new EqualToStringMatcher(value));
} else {
return Optional.empty();
}