in struts2-jst-plugin/src/main/resources/trimpath-template-1.0.38.js [230:265]
var emitStatement = function(stmtStr, state, funcText, tmplName, etc) {
var parts = stmtStr.slice(1, -1).split(' ');
var stmt = etc.statementDef[parts[0]]; // Here, parts[0] == for/if/else/...
if (stmt == null) { // Not a real statement.
emitSectionText(stmtStr, funcText);
return;
}
if (stmt.delta < 0) {
if (state.stack.length <= 0)
throw new etc.ParseError(tmplName, state.line, "close tag does not match any previous statement: " + stmtStr);
state.stack.pop();
}
if (stmt.delta > 0)
state.stack.push(stmtStr);
if (stmt.paramMin != null &&
stmt.paramMin >= parts.length)
throw new etc.ParseError(tmplName, state.line, "statement needs more parameters: " + stmtStr);
if (stmt.prefixFunc != null)
funcText.push(stmt.prefixFunc(parts, state, tmplName, etc));
else
funcText.push(stmt.prefix);
if (stmt.suffix != null) {
if (parts.length <= 1) {
if (stmt.paramDefault != null)
funcText.push(stmt.paramDefault);
} else {
for (var i = 1; i < parts.length; i++) {
if (i > 1)
funcText.push(' ');
funcText.push(parts[i]);
}
}
funcText.push(stmt.suffix);
}
}