package org.jtwig.parser.parboiled.expression.test;
import org.jtwig.model.expression.test.FunctionTestExpression;
import org.jtwig.parser.parboiled.ParserContext;
import org.jtwig.parser.parboiled.expression.FunctionExpressionParser;
import org.jtwig.parser.parboiled.expression.VariableExpressionParser;
import org.parboiled.Rule;
public class FunctionTestExpressionParser extends TestExpressionParser<FunctionTestExpression> {
public FunctionTestExpressionParser(ParserContext context) {
super(FunctionTestExpressionParser.class, context);
}
@Override
public Rule Test() {
FunctionExpressionParser functionExpressionParser = parserContext().parser(FunctionExpressionParser.class);
VariableExpressionParser variableExpressionParser = parserContext().parser(VariableExpressionParser.class);
return FirstOf(
Sequence(
functionExpressionParser.ExpressionRule(),
push(new FunctionTestExpression(functionExpressionParser.pop()))
),
Sequence(
variableExpressionParser.ExpressionRule(),
push(new FunctionTestExpression(variableExpressionParser.pop()))
)
);
}
}