package org.jtwig.value.compare; import org.jtwig.render.RenderRequest; import org.jtwig.value.convert.Converter; import java.math.BigDecimal; public class DefaultValueComparator implements ValueComparator { @Override public int compare(final RenderRequest renderRequest, Object left, Object right) { Converter<BigDecimal> numberConverter = renderRequest.getEnvironment().getValueEnvironment().getNumberConverter(); Converter.Result<BigDecimal> leftNumber = numberConverter.convert(left); Converter.Result<BigDecimal> rightNumber = numberConverter.convert(right); if (leftNumber.isDefined()) { if (rightNumber.isDefined()) { return leftNumber.get().compareTo(rightNumber.get()); } } return getString(renderRequest, left).compareTo(getString(renderRequest, right)); } private String getString(RenderRequest renderRequest, Object value) { return renderRequest.getEnvironment().getValueEnvironment().getStringConverter().convert(value); } }