@Override public boolean replace(Block expression) throws CompileException { boolean replaced = this.content.replace(expression); for (int i = 0;i<this.elseIfExpressions.size();i++) replaced = replaced || elseIfExpressions.get(i).replace(expression); if (elseExpression != null) replaced = replaced || elseExpression.replace(expression); return replaced; }
@Override public IfExpression compile(JtwigResource resource) throws CompileException { this.content = content.compile(resource); for (int i = 0;i<this.elseIfExpressions.size();i++) elseIfExpressions.set(i, elseIfExpressions.get(i).compile(resource)); if (elseExpression != null) elseExpression = elseExpression.compile(resource); return this; }
expressionParser.expression(), closeCode(), push(new IfExpression(expressionParser.pop())), content(), ((IfExpression) peek(1)).setContent(pop()), keyword(ELSEIF), expressionParser.expression(), push(new IfExpression.ElseIfExpression(expressionParser.pop())), closeCode(), content(), ((IfExpression.ElseIfExpression) peek(1)).setContent(pop()), ((IfExpression) peek(1)).addElseIf((IfExpression.ElseIfExpression) pop()) closeCode(), content(), ((IfExpression) peek(1)).setElseExpression(new IfExpression.ElseExpression((JtwigContent) pop()))
@Override public boolean render(OutputStream outputStream, JtwigContext context) throws RenderException { try { if (isTrue(conditionalExpression.calculate(context))) { return content.render(outputStream, context); } else { for (ElseIfExpression exp : elseIfExpressions) { if (exp.render(outputStream, context)) return true; } if (elseExpression != null) { return elseExpression.render(outputStream, context); } return true; } } catch (CalculateException e) { throw new RenderException(e); } }
keyword(IN), expressionParser.expression(), push(new ForPairLoop((Variable) expressionParser.pop(2), (Variable) expressionParser.pop(1), expressionParser.pop())) ), Sequence( keyword(IN), expressionParser.expression(), push(new ForLoop((Variable) expressionParser.pop(1), expressionParser.pop()))
Rule set() { return Sequence( openCode(), keyword(SET), mandatory( Sequence( expressionParser.variable(), push(new SetVariable((Variable) expressionParser.pop())), symbol(ATTR), expressionParser.expression(), ((SetVariable) peek(1)).setAssignment(expressionParser.pop()), closeCode() ), new ParseException("Wrong set syntax") ) ); }
Rule addToContent(Rule innerRule) { return Sequence( innerRule, ((JtwigContent) peek(1)).add(pop()) ); }
expressionParser.expression(), closeCode(), push(new IfExpression(expressionParser.pop())), content(), ((IfExpression) peek(1)).setContent(pop()), keyword(ELSEIF), expressionParser.expression(), push(new IfExpression.ElseIfExpression(expressionParser.pop())), closeCode(), content(), ((IfExpression.ElseIfExpression) peek(1)).setContent(pop()), ((IfExpression) peek(1)).addElseIf((IfExpression.ElseIfExpression) pop()) closeCode(), content(), ((IfExpression) peek(1)).setElseExpression(new IfExpression.ElseExpression((JtwigContent) pop()))
@Override public IfExpression compile(JtwigResource resource) throws CompileException { this.content = content.compile(resource); for (int i = 0;i<this.elseIfExpressions.size();i++) elseIfExpressions.set(i, elseIfExpressions.get(i).compile(resource)); if (elseExpression != null) elseExpression = elseExpression.compile(resource); return this; }
@Override public boolean replace(Block expression) throws CompileException { boolean replaced = this.content.replace(expression); for (int i = 0;i<this.elseIfExpressions.size();i++) replaced = replaced || elseIfExpressions.get(i).replace(expression); if (elseExpression != null) replaced = replaced || elseExpression.replace(expression); return replaced; }
@Override public boolean render(OutputStream outputStream, JtwigContext context) throws RenderException { try { if (isTrue(conditionalExpression.calculate(context))) { return content.render(outputStream, context); } else { for (ElseIfExpression exp : elseIfExpressions) { if (exp.render(outputStream, context)) return true; } if (elseExpression != null) { return elseExpression.render(outputStream, context); } return true; } } catch (CalculateException e) { throw new RenderException(e); } }
keyword(IN), expressionParser.expression(), push(new ForPairLoop((Variable) expressionParser.pop(2), (Variable) expressionParser.pop(1), expressionParser.pop())) ), Sequence( keyword(IN), expressionParser.expression(), push(new ForLoop((Variable) expressionParser.pop(1), expressionParser.pop()))
Rule addToContent(Rule innerRule) { return Sequence( innerRule, ((JtwigContent) peek(1)).add(pop()) ); }
Rule text() { return Sequence( push(new Text()), OneOrMore( FirstOf( Sequence("{#", ZeroOrMore(TestNot("#}"), ANY), "#}"), Sequence( basicParser.escape(), ((Text) peek()).append(match()) ), Sequence( TestNot( FirstOf( basicParser.symbol(OPEN_OUTPUT), basicParser.symbol(OPEN_CODE) ) ), ANY, ((Text) peek()).append(match()) ) ) ).suppressSubnodes() ); }
@Override public boolean render(OutputStream outputStream, JtwigContext context) throws RenderException { for (Object obj : getList()) { if (!(obj instanceof Content)) throw new RenderException("Expecting only renderable objects. Object "+obj.getClass().getName()+" isn't"); Content renderable = (Content) obj; renderable.render(outputStream, context); } return true; }
@Override public boolean render(OutputStream outputStream, JtwigContext context) throws RenderException { for (Object obj : getList()) { if (!(obj instanceof Content)) throw new RenderException("Expecting only renderable objects. Object "+obj.getClass().getName()+" isn't"); Content renderable = (Content) obj; renderable.render(outputStream, context); } return true; }