| OLD | NEW |
| 1 part of angular.filter; | 1 part of angular.formatter_internal; |
| 2 | 2 |
| 3 /** | 3 /** |
| 4 * Formats a number as a currency (ie $1,234.56). When no currency symbol is | 4 * Formats a number as a currency (ie $1,234.56). When no currency symbol is |
| 5 * provided, '$' used. | 5 * provided, '$' used. |
| 6 * | 6 * |
| 7 * | 7 * |
| 8 * Usage: | 8 * Usage: |
| 9 * | 9 * |
| 10 * {{ numeric_expression | currency[:symbol[:leading]] }} | 10 * {{ numeric_expression | currency[:symbol[:leading]] }} |
| 11 * | 11 * |
| 12 */ | 12 */ |
| 13 @NgFilter(name:'currency') | 13 @Formatter(name:'currency') |
| 14 class CurrencyFilter { | 14 class Currency implements Function { |
| 15 NumberFormat nf = new NumberFormat(); | |
| 16 | 15 |
| 17 CurrencyFilter() { | 16 var _nfs = new Map<String, NumberFormat>(); |
| 18 nf.minimumFractionDigits = 2; | |
| 19 nf.maximumFractionDigits = 2; | |
| 20 } | |
| 21 | 17 |
| 22 /** | 18 /** |
| 23 * [value]: the value to format | 19 * [value]: the value to format |
| 24 * | 20 * |
| 25 * [symbol]: Symbol to use. | 21 * [symbol]: Symbol to use. |
| 26 * | 22 * |
| 27 * [leading]: Symbol should be placed in front of the number | 23 * [leading]: Symbol should be placed in front of the number |
| 28 */ | 24 */ |
| 29 call(value, [symbol = r'$', leading = true]) { | 25 call(value, [symbol = r'$', leading = true]) { |
| 30 if (value is String) value = double.parse(value); | 26 if (value is String) value = double.parse(value); |
| 31 if (value is! num) return value; | 27 if (value is! num) return value; |
| 32 if (value.isNaN) return ''; | 28 if (value.isNaN) return ''; |
| 29 var verifiedLocale = Intl.verifiedLocale(Intl.getCurrentLocale(), NumberForm
at.localeExists); |
| 30 var nf = _nfs[verifiedLocale]; |
| 31 if (nf == null) { |
| 32 nf = new NumberFormat(); |
| 33 nf.minimumFractionDigits = 2; |
| 34 nf.maximumFractionDigits = 2; |
| 35 _nfs[verifiedLocale] = nf; |
| 36 } |
| 33 var neg = value < 0; | 37 var neg = value < 0; |
| 34 if (neg) value = -value; | 38 if (neg) value = -value; |
| 35 var before = neg ? '(' : ''; | 39 var before = neg ? '(' : ''; |
| 36 var after = neg ? ')' : ''; | 40 var after = neg ? ')' : ''; |
| 37 return leading ? | 41 return leading ? |
| 38 '$before$symbol${nf.format(value)}$after' : | 42 '$before$symbol${nf.format(value)}$after' : |
| 39 '$before${nf.format(value)}$symbol$after'; | 43 '$before${nf.format(value)}$symbol$after'; |
| 40 } | 44 } |
| 41 } | 45 } |
| OLD | NEW |