@Override TemplateModel _eval(Environment env) throws TemplateException { return _eval(env, this, lho.evalToNumber(env), operator, rho.evalToNumber(env)); }
@Override TemplateModel _eval(Environment env) throws TemplateException { final int begin = lho.evalToNumber(env).intValue(); if (endType != END_UNBOUND) { final int lhoValue = rho.evalToNumber(env).intValue(); return new BoundedRangeModel( begin, endType != END_SIZE_LIMITED ? lhoValue : begin + lhoValue, endType == END_INCLUSIVE, endType == END_SIZE_LIMITED); } else { return _TemplateAPI.getTemplateLanguageVersionAsInt(this) >= _TemplateAPI.VERSION_INT_2_3_21 ? (RangeModel) new ListableRightUnboundedRangeModel(begin) : (RangeModel) new NonListableRightUnboundedRangeModel(begin); } }
@Override protected String calculateInterpolatedStringOrMarkup(Environment env) throws TemplateException { Number num = expression.evalToNumber(env); FormatHolder fmth = formatCache; // atomic sampling if (fmth == null || !fmth.locale.equals(env.getLocale())) { synchronized (this) { fmth = formatCache; if (fmth == null || !fmth.locale.equals(env.getLocale())) { NumberFormat fmt = NumberFormat.getNumberInstance(env.getLocale()); if (hasFormat) { fmt.setMinimumFractionDigits(minFracDigits); fmt.setMaximumFractionDigits(maxFracDigits); } else { fmt.setMinimumFractionDigits(0); fmt.setMaximumFractionDigits(50); } fmt.setGroupingUsed(false); formatCache = new FormatHolder(fmt, env.getLocale()); fmth = formatCache; } } } // We must use Format even if hasFormat == false. // Some locales may use non-Arabic digits, thus replacing the // decimal separator in the result of toString() is not enough. String s = fmth.format.format(num); return s; }
env, getParentElement(), lhoNumber, ArithmeticExpression.TYPE_SUBSTRACTION, ONE); } else { // operatorType == ArithmeticExpression.TYPE_... Number rhoNumber = valueExp.evalToNumber(env); value = ArithmeticExpression._eval(env, this, lhoNumber, operatorType, rhoNumber);
@Override TemplateModel _eval(Environment env) throws TemplateException { return _eval(env, this, lho.evalToNumber(env), operator, rho.evalToNumber(env)); }
@Override TemplateModel _eval(Environment env) throws TemplateException { return _eval(env, this, lho.evalToNumber(env), operator, rho.evalToNumber(env)); }
@Override TemplateModel _eval(Environment env) throws TemplateException { final int begin = lho.evalToNumber(env).intValue(); if (endType != END_UNBOUND) { final int lhoValue = rho.evalToNumber(env).intValue(); return new BoundedRangeModel( begin, endType != END_SIZE_LIMITED ? lhoValue : begin + lhoValue, endType == END_INCLUSIVE, endType == END_SIZE_LIMITED); } else { return _TemplateAPI.getTemplateLanguageVersionAsInt(this) >= _TemplateAPI.VERSION_INT_2_3_21 ? (RangeModel) new ListableRightUnboundedRangeModel(begin) : (RangeModel) new NonListableRightUnboundedRangeModel(begin); } }
@Override TemplateModel _eval(Environment env) throws TemplateException { final int begin = lho.evalToNumber(env).intValue(); if (endType != END_UNBOUND) { final int lhoValue = rho.evalToNumber(env).intValue(); return new BoundedRangeModel( begin, endType != END_SIZE_LIMITED ? lhoValue : begin + lhoValue, endType == END_INCLUSIVE, endType == END_SIZE_LIMITED); } else { return _TemplateAPI.getTemplateLanguageVersionAsInt(this) >= _TemplateAPI.VERSION_INT_2_3_21 ? (RangeModel) new ListableRightUnboundedRangeModel(begin) : (RangeModel) new NonListableRightUnboundedRangeModel(begin); } }
@Override protected String calculateInterpolatedStringOrMarkup(Environment env) throws TemplateException { Number num = expression.evalToNumber(env); FormatHolder fmth = formatCache; // atomic sampling if (fmth == null || !fmth.locale.equals(env.getLocale())) { synchronized (this) { fmth = formatCache; if (fmth == null || !fmth.locale.equals(env.getLocale())) { NumberFormat fmt = NumberFormat.getNumberInstance(env.getLocale()); if (hasFormat) { fmt.setMinimumFractionDigits(minFracDigits); fmt.setMaximumFractionDigits(maxFracDigits); } else { fmt.setMinimumFractionDigits(0); fmt.setMaximumFractionDigits(50); } fmt.setGroupingUsed(false); formatCache = new FormatHolder(fmt, env.getLocale()); fmth = formatCache; } } } // We must use Format even if hasFormat == false. // Some locales may use non-Arabic digits, thus replacing the // decimal separator in the result of toString() is not enough. String s = fmth.format.format(num); return s; }
@Override protected String calculateInterpolatedStringOrMarkup(Environment env) throws TemplateException { Number num = expression.evalToNumber(env); FormatHolder fmth = formatCache; // atomic sampling if (fmth == null || !fmth.locale.equals(env.getLocale())) { synchronized (this) { fmth = formatCache; if (fmth == null || !fmth.locale.equals(env.getLocale())) { NumberFormat fmt = NumberFormat.getNumberInstance(env.getLocale()); if (hasFormat) { fmt.setMinimumFractionDigits(minFracDigits); fmt.setMaximumFractionDigits(maxFracDigits); } else { fmt.setMinimumFractionDigits(0); fmt.setMaximumFractionDigits(50); } fmt.setGroupingUsed(false); formatCache = new FormatHolder(fmt, env.getLocale()); fmth = formatCache; } } } // We must use Format even if hasFormat == false. // Some locales may use non-Arabic digits, thus replacing the // decimal separator in the result of toString() is not enough. String s = fmth.format.format(num); return s; }
env, getParentElement(), lhoNumber, ArithmeticExpression.TYPE_SUBSTRACTION, ONE); } else { // operatorType == ArithmeticExpression.TYPE_... Number rhoNumber = valueExp.evalToNumber(env); value = ArithmeticExpression._eval(env, this, lhoNumber, operatorType, rhoNumber);
env, getParentElement(), lhoNumber, ArithmeticExpression.TYPE_SUBSTRACTION, ONE); } else { // operatorType == ArithmeticExpression.TYPE_... Number rhoNumber = valueExp.evalToNumber(env); value = ArithmeticExpression._eval(env, this, lhoNumber, operatorType, rhoNumber);