Skip to content

Commit 81e9edf

Browse files
committed
fixed currency filter for negative numbers
1 parent 8e9cbad commit 81e9edf

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/filters.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ filters.currency = function (value, sign) {
3838
value = parseFloat(value)
3939
if (!value && value !== 0) return ''
4040
sign = sign || '$'
41-
var s = Math.floor(value).toString(),
41+
var s = Math.floor(Math.abs(value)).toString(),
4242
i = s.length % 3,
4343
h = i > 0 ? (s.slice(0, i) + (s.length > 3 ? ',' : '')) : '',
4444
f = '.' + value.toFixed(2).slice(-2)
45-
return sign + h + s.slice(i).replace(/(\d{3})(?=\d)/g, '$1,') + f
45+
return (value < 0 ? '-' : '') + sign + h + s.slice(i).replace(/(\d{3})(?=\d)/g, '$1,') + f
4646
}
4747

4848
/**

test/unit/specs/filters.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,15 @@ describe('Filters', function () {
8282
assert.strictEqual(res3, '$123,443,434.43')
8383
})
8484

85+
it('should format a negative number correctly', function () {
86+
var res1 = filter(-50),
87+
res2 = filter(-150.43),
88+
res3 = filter(-1500.4343434)
89+
assert.strictEqual(res1, '-$50.00')
90+
assert.strictEqual(res2, '-$150.43')
91+
assert.strictEqual(res3, '-$1,500.43')
92+
})
93+
8594
it('should use the arg for the currency sign', function () {
8695
var res = filter(2134, '@')
8796
assert.strictEqual(res, '@2,134.00')

0 commit comments

Comments
 (0)