From 23b596f6b27e2631c5ba43f6969bbc3e7603ac7c Mon Sep 17 00:00:00 2001 From: Evan You Date: Wed, 5 Nov 2014 10:51:25 -0500 Subject: [PATCH] fix #541 currency filter for negative numbers --- src/filters/index.js | 5 +++-- test/unit/specs/filters_spec.js | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/filters/index.js b/src/filters/index.js index 246c9f91525..cf3c5b23b93 100644 --- a/src/filters/index.js +++ b/src/filters/index.js @@ -52,13 +52,14 @@ exports.currency = function (value, sign) { value = parseFloat(value) if (!value && value !== 0) return '' sign = sign || '$' - var s = Math.floor(value).toString(), + var s = Math.floor(Math.abs(value)).toString(), i = s.length % 3, h = i > 0 ? (s.slice(0, i) + (s.length > 3 ? ',' : '')) : '', f = '.' + value.toFixed(2).slice(-2) - return sign + h + s.slice(i).replace(digitsRE, '$1,') + f + return (value < 0 ? '-' : '') + + sign + h + s.slice(i).replace(digitsRE, '$1,') + f } /** diff --git a/test/unit/specs/filters_spec.js b/test/unit/specs/filters_spec.js index 92442fcbb79..013fd384f1a 100644 --- a/test/unit/specs/filters_spec.js +++ b/test/unit/specs/filters_spec.js @@ -58,6 +58,10 @@ describe('Filters', function () { expect(filter(false)).toBe('') expect(filter(null)).toBe('') expect(filter(undefined)).toBe('') + // negative numbers + expect(filter(-50)).toBe('-$50.00') + expect(filter(-150.43)).toBe('-$150.43') + expect(filter(-1500.4343434)).toBe('-$1,500.43') }) it('key', function () {