package org.jtwig.render.expression.calculator.enumerated;
import com.google.common.base.Optional;
import org.jtwig.render.RenderRequest;
import org.jtwig.value.convert.Converter;
import java.util.ArrayList;
import java.util.List;
public class CharDescendingOrderEnumerationListStrategy implements EnumerationListStrategy {
@Override
public Optional<List<Object>> enumerate(RenderRequest request, Object left, Object right) {
Converter.Result<Character> leftChar = request.getEnvironment().getValueEnvironment().getCharConverter().convert(left);
Converter.Result<Character> rightChar = request.getEnvironment().getValueEnvironment().getCharConverter().convert(right);
if (leftChar.isDefined() && rightChar.isDefined()) {
Character start = leftChar.get();
Character end = rightChar.get();
if (start >= end) {
List<Object> result = new ArrayList<>();
while (start > end) {
result.add(start);
start--;
}
result.add(start);
return Optional.of(result);
}
}
return Optional.absent();
}
}