/** * Given a sequence, applies each of our patterns over the sequence and returns * all non overlapping matches for each of the patterns. * Unlike #findAllNonOverlapping, overlapping matches from different patterns are kept. * * @param elements input sequence to match against * @return iterable of match results that are non-overlapping */ public Iterable<SequenceMatchResult<T>> findAllNonOverlappingMatchesPerPattern(List<? extends T> elements) { Collection<SequencePattern<T>> triggered = getTriggeredPatterns(elements); List<Iterable<SequenceMatchResult<T>>> allMatches = new ArrayList<>(elements.size()); for (SequencePattern<T> p:triggered) { SequenceMatcher<T> m = p.getMatcher(elements); m.setMatchWithResult(matchWithResult); Iterable<SequenceMatchResult<T>> matches = m.findAllNonOverlapping(); allMatches.add(matches); } return Iterables.chain(allMatches); }
/** * Given a sequence, applies each of our patterns over the sequence and returns * all non overlapping matches for each of the patterns. * Unlike #findAllNonOverlapping, overlapping matches from different patterns are kept * @param elements input sequence to match against * @return iterable of match results that are non-overlapping */ public Iterable<SequenceMatchResult<T>> findAllNonOverlappingMatchesPerPattern(List<? extends T> elements) { Collection<SequencePattern<T>> triggered = getTriggeredPatterns(elements); List<Iterable<SequenceMatchResult<T>>> allMatches = new ArrayList<Iterable<SequenceMatchResult<T>>>(elements.size()); for (SequencePattern<T> p:triggered) { Iterable<SequenceMatchResult<T>> matches = p.getMatcher(elements).findAllNonOverlapping(); allMatches.add(matches); } return Iterables.chain(allMatches); }
/** * Given a sequence, applies each of our patterns over the sequence and returns * all non overlapping matches for each of the patterns. * Unlike #findAllNonOverlapping, overlapping matches from different patterns are kept. * * @param elements input sequence to match against * @return iterable of match results that are non-overlapping */ public Iterable<SequenceMatchResult<T>> findAllNonOverlappingMatchesPerPattern(List<? extends T> elements) { Collection<SequencePattern<T>> triggered = getTriggeredPatterns(elements); List<Iterable<SequenceMatchResult<T>>> allMatches = new ArrayList<>(elements.size()); for (SequencePattern<T> p:triggered) { SequenceMatcher<T> m = p.getMatcher(elements); m.setMatchWithResult(matchWithResult); Iterable<SequenceMatchResult<T>> matches = m.findAllNonOverlapping(); allMatches.add(matches); } return Iterables.chain(allMatches); }
/** * Given a sequence, applies each of our patterns over the sequence and returns * all non overlapping matches for each of the patterns. * Unlike #findAllNonOverlapping, overlapping matches from different patterns are kept. * * @param elements input sequence to match against * @return iterable of match results that are non-overlapping */ public Iterable<SequenceMatchResult<T>> findAllNonOverlappingMatchesPerPattern(List<? extends T> elements) { Collection<SequencePattern<T>> triggered = getTriggeredPatterns(elements); List<Iterable<SequenceMatchResult<T>>> allMatches = new ArrayList<>(elements.size()); for (SequencePattern<T> p:triggered) { SequenceMatcher<T> m = p.getMatcher(elements); m.setMatchWithResult(matchWithResult); Iterable<SequenceMatchResult<T>> matches = m.findAllNonOverlapping(); allMatches.add(matches); } return Iterables.chain(allMatches); }