package org.jtwig.render.expression.test.calculator;
import com.google.common.base.Optional;
import com.google.common.base.Supplier;
import org.jtwig.functions.FunctionArguments;
import org.jtwig.model.expression.Expression;
import org.jtwig.model.expression.VariableExpression;
import org.jtwig.model.expression.test.IsFunctionTestExpression;
import org.jtwig.model.position.Position;
import org.jtwig.render.RenderRequest;
public class IsFunctionTestExpressionCalculator implements TestExpressionCalculator<IsFunctionTestExpression> {
@Override
public Object calculate(RenderRequest request, Position position, IsFunctionTestExpression test, Expression argument) {
if (argument instanceof VariableExpression) {
Optional<Supplier<Object>> function = request.getEnvironment().getFunctionResolver().resolve(request, position, ((VariableExpression) argument).getIdentifier(), FunctionArguments.empty());
return function.isPresent();
} else {
return false;
}
}
}