package org.jtwig.render.expression.calculator.operation.binary.calculators;
import org.jtwig.model.position.Position;
import org.jtwig.render.RenderRequest;
import org.jtwig.value.WrappedCollection;
import org.jtwig.value.convert.Converter;
import java.util.Iterator;
import java.util.Map;
public class InOperationCalculator implements SimpleBinaryOperationCalculator {
@Override
public Object calculate(RenderRequest request, Position position, Object left, Object right) {
Converter<WrappedCollection> collectionConverter = request.getEnvironment().getValueEnvironment().getCollectionConverter();
WrappedCollection wrappedCollection = collectionConverter.convert(right).or(WrappedCollection.singleton(right));
Iterator<Map.Entry<String, Object>> iterator = wrappedCollection.iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> next = iterator.next();
if (request.getEnvironment().getValueEnvironment().getValueComparator().compare(request, left, next.getValue()) == 0) {
return true;
}
}
return false;
}
}