@Override public Object get(Map<String, Object> model) { if (result != null) return result; Object r = condition.get(model); Boolean result = toBoolean(r); if (condition.hardcoded) this.result = result; return result; }
private Expression wrapBooleanOperationLeft(Expression exp, Operator operator) { switch (operator) { case AND: case AND2: case OR: case OR2: case TERNARY: if (exp != null) return new AsBooleanExpression(exp); } return exp; }
@Override public void setVariable(Variable v) { condition.setVariable(v); if (elseStatement != null) elseStatement.setVariable(v); }
@Override public Object get(Map<String, Object> model) { if ((Boolean) condition.get(model)) { return thenStatement.get(model); } else if (elseStatement != null) { return elseStatement.get(model); } return null; } }
@Override public Object get(Map<String, Object> model) { if ((Boolean) condition.get(model)) { return thenStatement.get(model); } else if (elseStatement != null) { return elseStatement.get(model); } return null; } }
@Override public Object get(Map<String, Object> model) { if (result != null) return result; Object r = condition.get(model); Boolean result = toBoolean(r); if (condition.hardcoded) this.result = result; return result; }
private Expression wrapBooleanOperationRight(Expression exp, Operator operator) { switch (operator) { case AND: case AND2: case OR: case OR2: case NOT: if (exp != null) return new AsBooleanExpression(exp); } return exp; }
@Override public void setVariable(Variable v) { condition.setVariable(v); if (elseStatement != null) elseStatement.setVariable(v); }
public Tag init(Map<String, String> attrs, Body body, String offset) { ExpressionHolder<Collection> raw = asExpression(attrs, "test", false, true); add(model -> { RenderResult result = new RenderResult(); while (AsBooleanExpression.toBoolean(raw.getRaw(model))) { result.append(body.get(model)); } return result; }); return this; }
private Expression wrapBooleanOperationRight(Expression exp, Operator operator) { switch (operator) { case AND: case AND2: case OR: case OR2: case NOT: if (exp != null) return new AsBooleanExpression(exp); } return exp; }
@Override public RenderResult get(Map<String, Object> model) { RenderResult result = new RenderResult(); if (AsBooleanExpression.toBoolean(exp.getRaw(model))) { result.add(body.get(model)); } else if (elseTag != null) { result.add(elseTag.get(model)); } return result; } }
private Expression wrapBooleanOperationLeft(Expression exp, Operator operator) { switch (operator) { case AND: case AND2: case OR: case OR2: case TERNARY: if (exp != null) return new AsBooleanExpression(exp); } return exp; }
@Override public Tag init(Map<String, String> attrs, Body body, String offset) { ExpressionHolder raw = asExpression(attrs, "boolean", false, true); Renderable trueString = getValueRenderable("true", attrs); Renderable falseString = getValueRenderable("false", attrs); append(offset); append(model -> { Object value = raw.getRaw(model); if (AsBooleanExpression.toBoolean(value)) return trueString.get(model); else return falseString.get(model); }); append("\n"); return this; }
@Override public Expression clone() { return new AsBooleanExpression(condition.clone()); }
else if (!ch.equalsIgnoreCase("false")) { ExpressionHolder checked = asExpression(ch, true); append((model) -> new RenderResult(AsBooleanExpression.toBoolean(checked.getRaw(model)) ? " checked=\"checked\"" : ""));
@Override public Expression clone() { return new AsBooleanExpression(condition.clone()); }
else if (!ch.equalsIgnoreCase("false")) { ExpressionHolder checked = asExpression(ch, false); append((model) -> new RenderResult(AsBooleanExpression.toBoolean(checked.getRaw(model)) ? " checked=\"checked\"" : ""));
public Expression prepare(Map<String, Object> model, Map<String, UserFunction> functions, List<String> imports) { switch (type) { case IF: { List<String> args = getBlocks(statement, true); if (args.size() > 1) throw new IllegalStateException("more then one statement in condition: " + statement); AsBooleanExpression condition = new AsBooleanExpression(EvalTools.prepare(args.get(0), model, functions, imports)); Expression then = bodyStatement != null ? bodyStatement.prepare(model, functions, imports) : EvalTools.prepare(body, model, functions, imports); Expression elseExpression = optionalStatement != null ? optionalStatement.prepare(model, functions, imports) : EvalTools.prepare(optional, model, functions, imports); if (elseExpression == null) return new IfExpression(condition, then); else return new IfExpression(condition, then, elseExpression); } default: throw new IllegalStateException("not implemented yet"); } }