All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.pebbletemplates.pebble.node.expression.RangeExpression Maven / Gradle / Ivy

There is a newer version: 3.2.2
Show newest version
package io.pebbletemplates.pebble.node.expression;

import io.pebbletemplates.pebble.extension.core.RangeFunction;
import io.pebbletemplates.pebble.node.ArgumentsNode;
import io.pebbletemplates.pebble.node.PositionalArgumentNode;
import io.pebbletemplates.pebble.template.EvaluationContextImpl;
import io.pebbletemplates.pebble.template.PebbleTemplateImpl;

import java.util.ArrayList;
import java.util.List;

/**
 * Expression which implements the range function.
 *
 * @author Eric Bussieres
 */
public class RangeExpression extends BinaryExpression {

  @Override
  public Object evaluate(PebbleTemplateImpl self, EvaluationContextImpl context) {
    List positionalArgs = new ArrayList<>();
    positionalArgs.add(new PositionalArgumentNode(getLeftExpression()));
    positionalArgs.add(new PositionalArgumentNode(getRightExpression()));

    ArgumentsNode arguments = new ArgumentsNode(positionalArgs, null, this.getLineNumber());
    FunctionOrMacroInvocationExpression function = new FunctionOrMacroInvocationExpression(
        RangeFunction.FUNCTION_NAME, arguments, this.getLineNumber());

    return function.evaluate(self, context);
  }

}