Browse Source

Merge pull request #376 from xrado/dev

fixed currency filter for negative numbers
Evan You 11 years ago
parent
commit
c8a168bbfb
2 changed files with 11 additions and 2 deletions
  1. 2 2
      src/filters.js
  2. 9 0
      test/unit/specs/filters.js

+ 2 - 2
src/filters.js

@@ -38,11 +38,11 @@ filters.currency = function (value, sign) {
     value = parseFloat(value)
     value = parseFloat(value)
     if (!value && value !== 0) return ''
     if (!value && value !== 0) return ''
     sign = sign || '$'
     sign = sign || '$'
-    var s = Math.floor(value).toString(),
+    var s = Math.floor(Math.abs(value)).toString(),
         i = s.length % 3,
         i = s.length % 3,
         h = i > 0 ? (s.slice(0, i) + (s.length > 3 ? ',' : '')) : '',
         h = i > 0 ? (s.slice(0, i) + (s.length > 3 ? ',' : '')) : '',
         f = '.' + value.toFixed(2).slice(-2)
         f = '.' + value.toFixed(2).slice(-2)
-    return sign + h + s.slice(i).replace(/(\d{3})(?=\d)/g, '$1,') + f
+    return (value < 0 ? '-' : '') + sign + h + s.slice(i).replace(/(\d{3})(?=\d)/g, '$1,') + f
 }
 }
 
 
 /**
 /**

+ 9 - 0
test/unit/specs/filters.js

@@ -82,6 +82,15 @@ describe('Filters', function () {
             assert.strictEqual(res3, '$123,443,434.43')
             assert.strictEqual(res3, '$123,443,434.43')
         })
         })
 
 
+        it('should format a negative number correctly', function () {
+            var res1 = filter(-50),
+                res2 = filter(-150.43),
+                res3 = filter(-1500.4343434)
+            assert.strictEqual(res1, '-$50.00')
+            assert.strictEqual(res2, '-$150.43')
+            assert.strictEqual(res3, '-$1,500.43')
+        })
+
         it('should use the arg for the currency sign', function () {
         it('should use the arg for the currency sign', function () {
             var res = filter(2134, '@')
             var res = filter(2134, '@')
             assert.strictEqual(res, '@2,134.00')
             assert.strictEqual(res, '@2,134.00')