001package de.monochromata.anaphors.ast;
002
003import static java.util.stream.Collectors.toList;
004
005import java.util.List;
006
007import org.apache.commons.lang3.tuple.ImmutablePair;
008import org.apache.commons.lang3.tuple.Pair;
009
010import de.monochromata.anaphors.ast.relatedexp.RelatedExpression;
011import de.monochromata.anaphors.ast.relatedexp.strategy.LocalTempVariableContents;
012
013public interface AnaphorPartsStreaming {
014
015        static <N, E, T, B, TB extends B, S, I, QI, R extends RelatedExpression<N, T, B, TB, S, QI, R>, A extends ASTBasedAnaphora<N, E, T, B, TB, S, I, QI, R, A>> List<Pair<LocalTempVariableContents, String>> toVariableContentsAndAnaphors(
016                        final List<AnaphorPart<N, E, T, B, TB, S, I, QI, R, A>> anaphorParts) {
017                final List<Pair<LocalTempVariableContents, String>> variableContentsAndAnaphors = anaphorParts.stream()
018                                .map(anaphorPart -> new ImmutablePair<>(
019                                                anaphorPart.getAnaphorResolutionStrategy().getLocalTempVariableContents(),
020                                                anaphorPart.getAnaphor()))
021                                .collect(toList());
022                return variableContentsAndAnaphors;
023        }
024
025}