feat(currencyFilter): trim whitespace around an empty currency symbol

In most locales, this won't make a difference (since they do not have
whitespace around their currency symbols). In locales where there is a
whitespace separating the currency symbol from the number, it makes
sense to also remove such whitespace if the user specified an empty
currency symbol (indicating they just want the number).

Fixes #15018
Closes #15085

Closes #15105
This commit is contained in:
Georgios Kalpakas
2016-09-07 23:40:38 +03:00
committed by George Kalpakas
parent 22450e5b7c
commit 62743a54b7
2 changed files with 17 additions and 1 deletions
+4 -1
View File
@@ -68,11 +68,14 @@ function currencyFilter($locale) {
fractionSize = formats.PATTERNS[1].maxFrac;
}
// If the currency symbol is empty, trim whitespace around the symbol
var currencySymbolRe = !currencySymbol ? /\s*\u00A4\s*/g : /\u00A4/g;
// if null or undefined pass it through
return (amount == null)
? amount
: formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, fractionSize).
replace(/\u00A4/g, currencySymbol);
replace(currencySymbolRe, currencySymbol);
};
}
+13
View File
@@ -186,6 +186,19 @@ describe('filters', function() {
expect(currency(1.07)).toBe('$1.1');
}));
it('should trim whitespace around the currency symbol if it is empty',
inject(function($locale) {
var pattern = $locale.NUMBER_FORMATS.PATTERNS[1];
pattern.posPre = pattern.posSuf = ' \u00A4 ';
pattern.negPre = pattern.negSuf = ' - \u00A4 - ';
expect(currency(+1.07, '$')).toBe(' $ 1.07 $ ');
expect(currency(-1.07, '$')).toBe(' - $ - 1.07 - $ - ');
expect(currency(+1.07, '')).toBe('1.07');
expect(currency(-1.07, '')).toBe(' -- 1.07 -- ');
})
);
});
describe('number', function() {