package org.jtwig.render.node.renderer; import org.jtwig.model.tree.IfNode; import org.jtwig.render.RenderRequest; import org.jtwig.render.expression.CalculateExpressionService; import org.jtwig.render.node.RenderNodeService; import org.jtwig.renderable.Renderable; import org.jtwig.renderable.impl.EmptyRenderable; import org.jtwig.value.convert.Converter; import java.util.Collection; public class IfNodeRender implements NodeRender<IfNode> { @Override public Renderable render(RenderRequest request, IfNode node) { CalculateExpressionService calculateExpressionService = request.getEnvironment().getRenderEnvironment().getCalculateExpressionService(); RenderNodeService renderNodeService = request.getEnvironment().getRenderEnvironment().getRenderNodeService(); Converter<Boolean> booleanConverter = request.getEnvironment().getValueEnvironment().getBooleanConverter(); Collection<IfNode.IfConditionNode> conditionNodes = node.getConditionNodes(); for (IfNode.IfConditionNode conditionNode : conditionNodes) { Object result = calculateExpressionService.calculate(request, conditionNode.getCondition()); Converter.Result<Boolean> booleanValue = booleanConverter.convert(result); if (booleanValue.or(true)) { return renderNodeService.render(request, conditionNode.getContent()); } } return EmptyRenderable.instance(); } }