@Override public SplittingIterator iterator(final Splitter splitter, CharSequence toSplit) { final CommonMatcher matcher = separatorPattern.matcher(toSplit); return new SplittingIterator(splitter, toSplit) { @Override public int separatorStart(int start) { return matcher.find(start) ? matcher.start() : -1; } @Override public int separatorEnd(int separatorPosition) { return matcher.end(); } }; } });
@Override public String toString() { return "Predicates.containsPattern(" + pattern.pattern() + ")"; }
@GwtIncompatible // java.util.regex.Pattern @AndroidIncompatible // Bug in older versions of Android we test against, since fixed. public void testPatternSplitLookBehind() { if (!CommonPattern.isPcreLike()) { return; } String toSplit = ":foo::barbaz:"; String regexPattern = "(?<=:)"; Iterable<String> split = Splitter.onPattern(regexPattern).split(toSplit); assertThat(split).containsExactly(":", "foo:", ":", "barbaz:").inOrder(); // splits into chunks ending in : }
@Override public String toString() { return "Predicates.containsPattern(" + pattern.pattern() + ")"; }
@GwtIncompatible // java.util.regex.Pattern @AndroidIncompatible // not clear that j.u.r.Matcher promises to handle mutations during use public void testSplitterIterableIsLazy_pattern() { if (!CommonPattern.isPcreLike()) { return; } assertSplitterIterableIsLazy(Splitter.onPattern(",")); }
@Override public boolean equals(@Nullable Object obj) { if (obj instanceof ContainsPatternPredicate) { ContainsPatternPredicate that = (ContainsPatternPredicate) obj; // Pattern uses Object (identity) equality, so we have to reach // inside to compare individual fields. return Objects.equal(pattern.pattern(), that.pattern.pattern()) && pattern.flags() == that.pattern.flags(); } return false; }
@Override public SplittingIterator iterator(final Splitter splitter, CharSequence toSplit) { final CommonMatcher matcher = separatorPattern.matcher(toSplit); return new SplittingIterator(splitter, toSplit) { @Override public int separatorStart(int start) { return matcher.find(start) ? matcher.start() : -1; } @Override public int separatorEnd(int separatorPosition) { return matcher.end(); } }; } });
@Override public String toString() { return "Predicates.containsPattern(" + pattern.pattern() + ")"; }
@Override public SplittingIterator iterator(final Splitter splitter, CharSequence toSplit) { final CommonMatcher matcher = separatorPattern.matcher(toSplit); return new SplittingIterator(splitter, toSplit) { @Override public int separatorStart(int start) { return matcher.find(start) ? matcher.start() : -1; } @Override public int separatorEnd(int separatorPosition) { return matcher.end(); } }; } });
@Override public String toString() { return "Predicates.containsPattern(" + pattern.pattern() + ")"; }
@Override public boolean apply(CharSequence t) { return pattern.matcher(t).find(); }
@Override public String toString() { return "Predicates.containsPattern(" + pattern.pattern() + ")"; }
@Override public boolean equals(@NullableDecl Object obj) { if (obj instanceof ContainsPatternPredicate) { ContainsPatternPredicate that = (ContainsPatternPredicate) obj; // Pattern uses Object (identity) equality, so we have to reach // inside to compare individual fields. return Objects.equal(pattern.pattern(), that.pattern.pattern()) && pattern.flags() == that.pattern.flags(); } return false; }
@Override public boolean apply(CharSequence t) { return pattern.matcher(t).find(); }
@Override public boolean apply(CharSequence t) { return pattern.matcher(t).find(); }