From 2d2f7169b6e4135c16a2ac2ddae7862d973387e5 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Tue, 24 Mar 2020 22:03:44 -0400 Subject: [PATCH] update handlebars utils, // means integer division --- .../org/cobbzilla/util/handlebars/HandlebarsUtil.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/cobbzilla/util/handlebars/HandlebarsUtil.java b/src/main/java/org/cobbzilla/util/handlebars/HandlebarsUtil.java index 93cbf03..a619248 100644 --- a/src/main/java/org/cobbzilla/util/handlebars/HandlebarsUtil.java +++ b/src/main/java/org/cobbzilla/util/handlebars/HandlebarsUtil.java @@ -474,19 +474,20 @@ public class HandlebarsUtil extends AbstractTemplateLoader { case "+": result = big(v1).add(big(v2)); break; case "-": result = big(v1).subtract(big(v2)); break; case "*": result = big(v1).multiply(big(v2)); break; - case "/": case "//": - result = big(v1).divide(big(v2), MathContext.DECIMAL128); break; + case "/": result = big(v1).divide(big(v2), MathContext.DECIMAL128); break; + case "//": result = big(big(v1).divide(big(v2), MathContext.DECIMAL128).longValue()); break; case "%": result = big(v1).remainder(big(v2)).abs(); break; case "^": result = big(v1).pow(big(v2).intValue()); break; default: return die("expr: invalid operator: "+operator); } - // can't use trigraph (?:) operator here, if we do then for some reason rval always ends up as a double final Number rval; - if (v1.contains(".") || v2.contains(".") || operator.equals("/")) { + if (operator.equals("//")) { + rval = result.longValue(); + } else if (v1.contains(".") || v2.contains(".") || operator.equals("/")) { rval = result.doubleValue(); } else { - rval = result.intValue(); + rval = result.longValue(); } if (format != null) { final Locale locale = LocaleUtil.fromString(options.params.length > 3 && !empty(options.param(3)) ? options.param(3) : null);