package org.jtwig.render.expression.calculator.operation.binary.calculators;
import org.jtwig.model.position.Position;
import org.jtwig.render.RenderRequest;
import org.jtwig.value.convert.Converter;
public class BooleanOperationCalculator implements SimpleBinaryOperationCalculator {
private final SimpleBinaryBooleanCalculator binaryBooleanCalculator;
public BooleanOperationCalculator(SimpleBinaryBooleanCalculator binaryBooleanCalculator) {
this.binaryBooleanCalculator = binaryBooleanCalculator;
}
@Override
public Object calculate(RenderRequest request, Position position, Object left, Object right) {
Converter<Boolean> booleanConverter = request.getEnvironment().getValueEnvironment().getBooleanConverter();
boolean leftValue = booleanConverter.convert(left).or(true);
boolean rightValue = booleanConverter.convert(right).or(true);
return binaryBooleanCalculator.calculate(leftValue, rightValue);
}
}