package com.miguelfonseca.completely.text.analyze;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import static com.miguelfonseca.completely.common.Precondition.checkPointer;
/**
* Chain of multiple {@link Analyzer} functions.
*/
public class ChainedAnalyzer extends Analyzer
{
private Collection<Analyzer> chain;
/**
* Constructs a new {@link ChainedAnalyzer}.
*/
public ChainedAnalyzer(Analyzer... chain)
{
this.chain = Arrays.asList(chain);
}
@Override
public Collection<String> apply(Collection<String> input)
{
checkPointer(input != null);
Collection<String> result = new ArrayList<>(input);
for (Analyzer analyzer : chain)
{
checkPointer(analyzer != null);
result = analyzer.apply(result);
}
return result;
}
}