-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMTemplateDebugger1.json
More file actions
9 lines (9 loc) · 4.04 KB
/
Copy pathMTemplateDebugger1.json
File metadata and controls
9 lines (9 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
{
"reset": "@Override\n public void reset() {\n super.reset();\n // so we can use it more than one time\n exprs = null;\n script = null;\n }",
"debug": "public boolean debug(final JxltEngine.Template jt) {\n if (!(jt instanceof TemplateScript)) {\n return false;\n }\n final TemplateScript ts = (TemplateScript) jt;\n // ensure expr is not null for templates\n this.exprs = ts.getExpressions() == null? new TemplateExpression[0] : ts.getExpressions();\n this.script = ts.getScript();\n start = 0;\n end = 0;\n indentLevel = 0;\n builder.setLength(0);\n cause = script;\n final int num = script.jjtGetNumChildren();\n for (int i = 0; i < num; ++i) {\n final JexlNode child = script.jjtGetChild(i);\n acceptStatement(child, null);\n }\n // the last line\n if (builder.length() > 0 && builder.charAt(builder.length() - 1) != '\\n') {\n builder.append('\\n');\n }\n end = builder.length();\n return end > 0;\n }",
"visit": "private Object visit(final CompositeExpression expr, final Object data) {\n for (final TemplateExpression ce : expr.exprs) {\n visit(ce, data);\n }\n return data;\n }",
"acceptStatement": "@Override\n protected Object acceptStatement(final JexlNode child, final Object data) {\n // if not really a template, must use super impl\n if (exprs == null) {\n return super.acceptStatement(child, data);\n }\n final TemplateExpression te = getPrintStatement(child);\n if (te != null) {\n // if statement is a jexl:print(...), may need to prepend '\\n'\n newJxltLine();\n return visit(te, data);\n }\n // if statement is not a jexl:print(...), need to prepend '$$'\n newJexlLine();\n return super.acceptStatement(child, data);\n }",
"getPrintStatement": "private TemplateExpression getPrintStatement(final JexlNode child) {\n if (exprs != null && child instanceof ASTFunctionNode) {\n final ASTFunctionNode node = (ASTFunctionNode) child;\n final ASTIdentifier ns = (ASTIdentifier) node.jjtGetChild(0);\n final JexlNode args = node.jjtGetChild(1);\n if (\"jexl\".equals(ns.getNamespace())\n && \"print\".equals(ns.getName())\n && args.jjtGetNumChildren() == 1\n && args.jjtGetChild(0) instanceof ASTNumberLiteral) {\n final ASTNumberLiteral exprn = (ASTNumberLiteral) args.jjtGetChild(0);\n final int n = exprn.getLiteral().intValue();\n if (n >= 0 && n < exprs.length) {\n return exprs[n];\n }\n }\n }\n return null;\n }",
"newJexlLine": "private void newJexlLine() {\n final int length = builder.length();\n if (length == 0) {\n builder.append(\"$$ \");\n } else {\n for (int i = length - 1; i >= 0; --i) {\n final char c = builder.charAt(i);\n switch (c) {\n case '\\n':\n builder.append(\"$$ \");\n return;\n case '}':\n builder.append(\"\\n$$ \");\n return;\n case ' ':\n case ';':\n return;\n default: // continue\n }\n }\n }\n }",
"newJxltLine": "private void newJxltLine() {\n final int length = builder.length();\n for (int i = length - 1; i >= 0; --i) {\n final char c = builder.charAt(i);\n switch (c) {\n case '\\n':\n case ';':\n return;\n case '}':\n builder.append('\\n');\n return;\n default: // continue\n }\n }\n }"
}