From 886f4c1b68fa85eb0dbdd0088ea62a2c864febbe Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 20 Feb 2016 15:13:43 +0000 Subject: Make style names on matchers case insensitive --- src/main/java/org/zwobble/mammoth/styles/ParagraphMatcher.java | 9 +++++---- .../zwobble/mammoth/tests/styles/ParagraphMatcherTests.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main/java/org/zwobble/mammoth/styles/ParagraphMatcher.java b/src/main/java/org/zwobble/mammoth/styles/ParagraphMatcher.java index 980b88c..3a6432d 100644 --- a/src/main/java/org/zwobble/mammoth/styles/ParagraphMatcher.java +++ b/src/main/java/org/zwobble/mammoth/styles/ParagraphMatcher.java @@ -4,6 +4,7 @@ import org.zwobble.mammoth.documents.Paragraph; import org.zwobble.mammoth.documents.Style; import java.util.Optional; +import java.util.function.BiPredicate; public class ParagraphMatcher { public static final ParagraphMatcher ANY = new ParagraphMatcher(Optional.empty(), Optional.empty()); @@ -29,16 +30,16 @@ public class ParagraphMatcher { } private boolean matchesStyleId(Paragraph paragraph) { - return matches(styleId, paragraph.getStyle().map(Style::getStyleId)); + return matches(styleId, paragraph.getStyle().map(Style::getStyleId), Object::equals); } private boolean matchesStyleName(Paragraph paragraph) { - return matches(styleName, paragraph.getStyle().flatMap(Style::getName)); + return matches(styleName, paragraph.getStyle().flatMap(Style::getName), String::equalsIgnoreCase); } - private boolean matches(Optional required, Optional actual) { + private boolean matches(Optional required, Optional actual, BiPredicate areEqual) { return required - .map(requiredValue -> actual.map(requiredValue::equals).orElse(false)) + .map(requiredValue -> actual.map(actualValue -> areEqual.test(requiredValue, actualValue)).orElse(false)) .orElse(true); } } diff --git a/src/test/java/org/zwobble/mammoth/tests/styles/ParagraphMatcherTests.java b/src/test/java/org/zwobble/mammoth/tests/styles/ParagraphMatcherTests.java index 8c75369..fdaa075 100644 --- a/src/test/java/org/zwobble/mammoth/tests/styles/ParagraphMatcherTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/styles/ParagraphMatcherTests.java @@ -60,4 +60,14 @@ public class ParagraphMatcherTests { with(STYLE, Optional.of(new Style("Heading 1", Optional.of("Heading 1")))))); assertFalse(matcher.matches(paragraphWithIncorrectStyleName)); } + + @Test + public void styleNamesAreCaseInsensitive() { + ParagraphMatcher matcher = ParagraphMatcher.styleName("tips paragraph"); + assertFalse(matcher.matches(make(a(PARAGRAPH)))); + + Paragraph paragraphWithCorrectStyleName = make(a(PARAGRAPH, + with(STYLE, Optional.of(new Style("TipsParagraph", Optional.of("Tips Paragraph")))))); + assertTrue(matcher.matches(paragraphWithCorrectStyleName)); + } } -- cgit v1.2.3