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;
public class LengthFunction extends SimpleJtwigFunction {
@Override
public String name() {
return "length";
}
@Override
public Object execute(FunctionRequest request) {
request.maximumNumberOfArguments(1).minimumNumberOfArguments(1);
Object input = request.get(0);
if (input == null || input == Undefined.UNDEFINED) {
return 0;
} else {
Converter.Result<WrappedCollection> collectionResult = request.getEnvironment()
.getValueEnvironment().getCollectionConverter()
.convert(input);
if (collectionResult.isDefined()) {
return collectionResult.get().size();
} else if (input instanceof String) {
return ((String) input).length();
} else {
return 1;
}
}
}
}