package org.jtwig.functions.impl.string; import org.jtwig.functions.FunctionRequest; import org.jtwig.functions.SimpleJtwigFunction; import org.jtwig.value.WrappedCollection; import java.util.Iterator; import java.util.Map; public class ReplaceFunction extends SimpleJtwigFunction { @Override public String name() { return "replace"; } @Override public Object execute(FunctionRequest request) { request.minimumNumberOfArguments(2).maximumNumberOfArguments(2); String input = getString(request, request.get(0)); WrappedCollection wrappedCollection = request.getEnvironment().getValueEnvironment() .getCollectionConverter().convert(request.get(1)) .or(WrappedCollection.empty()); Iterator<Map.Entry<String, Object>> iterator = wrappedCollection.iterator(); while (iterator.hasNext()) { Map.Entry<String, Object> entry = iterator.next(); input = input.replace(entry.getKey(), getString(request, entry.getValue())); } return input; } private String getString(FunctionRequest request, Object value) { return request.getEnvironment().getValueEnvironment().getStringConverter().convert(value); } }