package com.hubspot.jinjava.el.ext; import java.util.ArrayList; import java.util.List; import javax.el.ELContext; import org.apache.commons.lang3.StringUtils; import com.hubspot.jinjava.objects.collections.PyList; import de.odysseus.el.tree.Bindings; import de.odysseus.el.tree.impl.ast.AstLiteral; import de.odysseus.el.tree.impl.ast.AstParameters; public class AstList extends AstLiteral { private final AstParameters elements; public AstList(AstParameters elements) { this.elements = elements; } @Override public Object eval(Bindings bindings, ELContext context) { List<Object> list = new ArrayList<>(); for (int i = 0; i < elements.getCardinality(); i++) { list.add(elements.getChild(i).eval(bindings, context)); } return new PyList(list); } @Override public void appendStructure(StringBuilder builder, Bindings bindings) { throw new UnsupportedOperationException("appendStructure not implemented in " + getClass().getSimpleName()); } protected String elementsToString() { List<String> els = new ArrayList<>(elements.getCardinality()); for (int i = 0; i < elements.getCardinality(); i++) { els.add(elements.getChild(i).toString()); } return StringUtils.join(els, ", "); } @Override public String toString() { return String.format("[%s]", elementsToString()); } }