return new SimpleWildcardMatcher(split[0], matcher.startsWith(WILDCARD), matcher.endsWith(WILDCARD), ignoreCase); boolean isFirst = i == 0; boolean isLast = i == split.length - 1; matchers.add(new SimpleWildcardMatcher(split[i], !isFirst || matcher.startsWith(WILDCARD), !isLast || matcher.endsWith(WILDCARD),
@Override public boolean matches(String firstPart, @Nullable String secondPart) { return indexOf(firstPart, secondPart, 0) != -1; }
int indexOf(String firstPart, @Nullable String secondPart, int offset) { if (secondPart == null) { secondPart = ""; } int totalLength = firstPart.length() + secondPart.length(); if (wildcardAtEnd && wildcardAtBeginning) { return indexOfIgnoreCase(firstPart, secondPart, matcher, ignoreCase, offset, totalLength); } else if (wildcardAtEnd) { return indexOfIgnoreCase(firstPart, secondPart, matcher, ignoreCase, 0, 1); } else if (wildcardAtBeginning) { return indexOfIgnoreCase(firstPart, secondPart, matcher, ignoreCase, totalLength - matcher.length(), totalLength); } else if (totalLength == matcher.length()) { return indexOfIgnoreCase(firstPart, secondPart, matcher, ignoreCase, 0, totalLength); } else { return -1; } }
int indexOf(final String s, final int offset) { return indexOf(s, "", offset); }
@Override public boolean matches(String s) { int offset = 0; for (int i = 0; i < wildcardMatchers.size(); i++) { final SimpleWildcardMatcher matcher = wildcardMatchers.get(i); offset = matcher.indexOf(s, offset); if (offset == -1) { return false; } offset += matcher.matcher.length(); } return true; }
@Override public boolean matches(String s) { return indexOf(s, 0) != -1; }
@Override public boolean matches(String firstPart, @Nullable String secondPart) { int offset = 0; for (int i = 0; i < wildcardMatchers.size(); i++) { final SimpleWildcardMatcher matcher = wildcardMatchers.get(i); offset = matcher.indexOf(firstPart, secondPart, offset); if (offset == -1) { return false; } offset += matcher.matcher.length(); } return true; }
@Test void testCharAt() { assertSoftly(softly -> { softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(0, "foo", "bar", "foo".length())).isEqualTo('f'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(1, "foo", "bar", "foo".length())).isEqualTo('o'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(2, "foo", "bar", "foo".length())).isEqualTo('o'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(3, "foo", "bar", "foo".length())).isEqualTo('b'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(4, "foo", "bar", "foo".length())).isEqualTo('a'); softly.assertThat(WildcardMatcher.SimpleWildcardMatcher.charAt(5, "foo", "bar", "foo".length())).isEqualTo('r'); }); }