/* Generated By:JJTree: Do not edit this line. ASTAtText.java Version 4.3 */
/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=true,VISITOR=false,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
package org.openntf.formula.ast;
import java.util.Set;
import org.openntf.formula.EvaluateException;
import org.openntf.formula.FormulaContext;
import org.openntf.formula.FormulaReturnException;
import org.openntf.formula.Function;
import org.openntf.formula.ValueHolder;
import org.openntf.formula.ValueHolder.DataType;
import org.openntf.formula.parse.AtFormulaParserImpl;
public class ASTAtText extends SimpleNode {
private Function function;
public ASTAtText(final AtFormulaParserImpl p, final int id) {
super(p, id);
function = p.getFunctionLC("@text");
}
@Override
public ValueHolder evaluate(final FormulaContext ctx) throws FormulaReturnException {
ValueHolder params[] = new ValueHolder[children.length];
ValueHolder ret = null;
for (int i = 0; i < children.length; i++) {
params[i] = children[i].evaluate(ctx);
if (params[i].dataType == DataType.ERROR) {
ret = params[i];
break;
}
}
try {
if (ret == null) {
ret = function.evaluate(ctx, params);
}
} catch (RuntimeException e) {
return ValueHolder.valueOf(new EvaluateException(codeLine, codeColumn, e));
}
if (ret.dataType == DataType.ERROR)
ret = ValueHolder.valueOf(ret.getError().getMessage());
return ret;
}
@Override
protected void analyzeThis(final Set<String> readFields, final Set<String> modifiedFields, final Set<String> variables,
final Set<String> functions) {
functions.add("@text");
}
}
/* JavaCC - OriginalChecksum=44d26c7a72251691e63865deedd5324c (do not edit this line) */