public Tag addExpression(Expression expression) throws ExpressionParsingException { addChild(new ExpressionNode("", expression)); return this; }
public void eval(ExpressionContext context, Writer out) throws IOException, TemplateEvaluationException { try { Object value = expression.eval(context); if (value != null) { String str = applyFilters(value, context.getLocale()); if (raw) { out.write(str); } else { out.write(EscapeFilter.doFilter(str)); } } } catch (ExpressionEvaluationException e) { throw new TemplateEvaluationException(e, "Could not execute the expression: " + e.getMessage() + ", on line: " + getBeginLine() + ", column: " + getBeginColumn(), getBeginLine(), getBeginColumn(), value); } }
public String toString() { return getSource(); }
private ExpressionNode expression() throws TemplateParsingException { try { ExpressionToken tok = (ExpressionToken) currentToken; ExpressionNode node = new ExpressionNode(currentToken.value, expressionLanguage.parse(currentToken.value, currentToken.getLineNo(), currentToken.getColumn()), tok.isRawExpression()); node.setBeginLine(currentToken.getLineNo()); node.setBeginColumn(currentToken.getColumn()); String[] lines = node.getSource().split("\n"); node.setEndLine(currentToken.getLineNo() + lines.length); if (lines.length == 0) { node.setEndColumn(currentToken.getColumn() + node.getSource().length()); } else { node.setEndColumn(currentToken.getColumn() + lines[lines.length - 1].replaceAll("\r", "").length()); } if (tok.getFilters() != null) { node.setFilters(tok.getFilters()); } return node; } catch (ExpressionParsingException e) { throw new TemplateParsingException("Error parsing expression", e, currentToken.getLineNo(), currentToken.getColumn()); } }
public void setFilters(ArrayList<String> f) { filters = new ArrayList<Filter>(); for (String s : f) { String name; String params; int i = s.indexOf(':'); if (i != -1) { name = s.substring(0, i); params = s.substring(i + 1).trim(); } else { name = s; params = null; } Filter filter = Cambridge.getInstance().getFilter(name, getBeginLine(), getBeginColumn()); if (filter != null) { filter.init(params); filters.add(filter); } } if (filters.size() == 0) { filters = null; } }
ExpressionToken expTok = (ExpressionToken) attrToken; try { ExpressionNode expNode = new ExpressionNode(attrToken.value, expressionLanguage.parse(attrToken.value, attrToken.getLineNo(), attrToken.getColumn()), expTok.isRawExpression()); expNode.setFilters(expTok.getFilters());
} else if (af instanceof ExpressionNode) { ExpressionNode ex = (ExpressionNode) af; ex.eval(context, out);