package org.jtwig.render.expression.calculator; import org.jtwig.exceptions.ResolveValueException; import org.jtwig.model.expression.VariableExpression; import org.jtwig.render.RenderRequest; import org.jtwig.util.ErrorMessageFormatter; import org.jtwig.value.Undefined; import org.jtwig.value.context.ValueContext; public class VariableExpressionCalculator implements ExpressionCalculator<VariableExpression> { @Override public Object calculate(RenderRequest request, VariableExpression expression) { String identifier = expression.getIdentifier(); Object value = request.getRenderContext().getCurrent(ValueContext.class).resolve(identifier); if (value == Undefined.UNDEFINED && request.getEnvironment().getRenderEnvironment().getStrictMode()) { throw new ResolveValueException(ErrorMessageFormatter.errorMessage(expression.getPosition(), String.format("Variable '%s' undefined", identifier))); } else { return value; } } }