package org.jtwig.functions.impl.list; import org.jtwig.functions.FunctionRequest; import org.jtwig.functions.SimpleJtwigFunction; import org.jtwig.value.WrappedCollection; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class MergeFunction extends SimpleJtwigFunction { @Override public String name() { return "merge"; } @Override public Object execute(FunctionRequest request) { request.minimumNumberOfArguments(2); Collection<Object> result = new ArrayList<>(); List<Object> arguments = request.getArguments(); for (Object argument : arguments) { WrappedCollection collection = getCollection(request, argument); result.addAll(collection.values()); } return result; } private WrappedCollection getCollection(FunctionRequest request, Object value) { return request.getEnvironment().getValueEnvironment().getCollectionConverter().convert(value).or(WrappedCollection.singleton(value)); } }