package org.jtwig.functions.impl.mixed;
import org.jtwig.functions.FunctionRequest;
import org.jtwig.functions.SimpleJtwigFunction;
import org.jtwig.value.Undefined;
import org.jtwig.value.WrappedCollection;
import org.jtwig.value.convert.Converter;
import java.util.Iterator;
import java.util.Map;
public class FirstFunction extends SimpleJtwigFunction {
@Override
public String name() {
return "first";
}
@Override
public Object execute(FunctionRequest request) {
request.minimumNumberOfArguments(1).maximumNumberOfArguments(1);
Object input = request.get(0);
Converter.Result<WrappedCollection> collectionResult = request.getEnvironment()
.getValueEnvironment().getCollectionConverter()
.convert(input);
if (collectionResult.isDefined()) {
Iterator<Map.Entry<String, Object>> iterator = collectionResult.get().iterator();
if (iterator.hasNext()) return iterator.next().getValue();
else return Undefined.UNDEFINED;
} else if (input instanceof String) {
String string = (String) input;
return string.length() > 0 ? string.charAt(0) : Undefined.UNDEFINED;
}
return input;
}
}