Index: third_party/pkg/angular/lib/formatter/currency.dart |
diff --git a/third_party/pkg/angular/lib/filter/currency.dart b/third_party/pkg/angular/lib/formatter/currency.dart |
similarity index 63% |
rename from third_party/pkg/angular/lib/filter/currency.dart |
rename to third_party/pkg/angular/lib/formatter/currency.dart |
index 0359ae2b6f27ce03003c2ccc308e63e09e4c2c67..b96124b4eaee24249897009a17cd045b29ca8eb9 100644 |
--- a/third_party/pkg/angular/lib/filter/currency.dart |
+++ b/third_party/pkg/angular/lib/formatter/currency.dart |
@@ -1,4 +1,4 @@ |
-part of angular.filter; |
+part of angular.formatter_internal; |
/** |
* Formats a number as a currency (ie $1,234.56). When no currency symbol is |
@@ -10,14 +10,10 @@ part of angular.filter; |
* {{ numeric_expression | currency[:symbol[:leading]] }} |
* |
*/ |
-@NgFilter(name:'currency') |
-class CurrencyFilter { |
- NumberFormat nf = new NumberFormat(); |
+@Formatter(name:'currency') |
+class Currency implements Function { |
- CurrencyFilter() { |
- nf.minimumFractionDigits = 2; |
- nf.maximumFractionDigits = 2; |
- } |
+ var _nfs = new Map<String, NumberFormat>(); |
/** |
* [value]: the value to format |
@@ -30,6 +26,14 @@ class CurrencyFilter { |
if (value is String) value = double.parse(value); |
if (value is! num) return value; |
if (value.isNaN) return ''; |
+ var verifiedLocale = Intl.verifiedLocale(Intl.getCurrentLocale(), NumberFormat.localeExists); |
+ var nf = _nfs[verifiedLocale]; |
+ if (nf == null) { |
+ nf = new NumberFormat(); |
+ nf.minimumFractionDigits = 2; |
+ nf.maximumFractionDigits = 2; |
+ _nfs[verifiedLocale] = nf; |
+ } |
var neg = value < 0; |
if (neg) value = -value; |
var before = neg ? '(' : ''; |