package org.jtwig.value.convert.number; import org.jtwig.value.Undefined; import org.jtwig.value.convert.Converter; import java.math.BigDecimal; public class BigDecimalConverter implements Converter<BigDecimal> { @Override public Result<BigDecimal> convert(Object object) { if (object == null) return Result.defined(BigDecimal.ZERO); if (object == Undefined.UNDEFINED) return Result.defined(BigDecimal.ZERO); if (object instanceof BigDecimal) return Result.defined((BigDecimal) object); if (object instanceof Number) return Result.defined(new BigDecimal(((Number) object).doubleValue())); if (object instanceof Boolean) return Result.defined(((boolean) object) ? BigDecimal.ONE : BigDecimal.ZERO); try { if (object instanceof String) return Result.defined(new BigDecimal((String) object)); } catch (NumberFormatException e) { } return Result.undefined(); } }