Quellcode durchsuchen

update handlebars utils, // means integer division

tags/2.0.1
Jonathan Cobb vor 4 Jahren
Ursprung
Commit
2d2f7169b6
1 geänderte Dateien mit 6 neuen und 5 gelöschten Zeilen
  1. +6
    -5
      src/main/java/org/cobbzilla/util/handlebars/HandlebarsUtil.java

+ 6
- 5
src/main/java/org/cobbzilla/util/handlebars/HandlebarsUtil.java Datei anzeigen

@@ -474,19 +474,20 @@ public class HandlebarsUtil extends AbstractTemplateLoader {
case "+": result = big(v1).add(big(v2)); break; case "+": result = big(v1).add(big(v2)); break;
case "-": result = big(v1).subtract(big(v2)); break; case "-": result = big(v1).subtract(big(v2)); break;
case "*": result = big(v1).multiply(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).remainder(big(v2)).abs(); break;
case "^": result = big(v1).pow(big(v2).intValue()); break; case "^": result = big(v1).pow(big(v2).intValue()); break;
default: return die("expr: invalid operator: "+operator); 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; 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(); rval = result.doubleValue();
} else { } else {
rval = result.intValue();
rval = result.longValue();
} }
if (format != null) { if (format != null) {
final Locale locale = LocaleUtil.fromString(options.params.length > 3 && !empty(options.param(3)) ? options.param(3) : null); final Locale locale = LocaleUtil.fromString(options.params.length > 3 && !empty(options.param(3)) ? options.param(3) : null);


Laden…
Abbrechen
Speichern