From 1fda3462fd5fc83125a10b9cdf0bc5be267db44a Mon Sep 17 00:00:00 2001 From: Ando Yasushi Date: Tue, 18 Feb 2014 19:43:47 +0900 Subject: [PATCH 1/3] fix(DateFilter): fix a wrong type not NumberFormat but DateFormat --- lib/filter/date.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/filter/date.dart b/lib/filter/date.dart index 04f83a952..609f08b4c 100644 --- a/lib/filter/date.dart +++ b/lib/filter/date.dart @@ -33,7 +33,7 @@ class DateFilter { 'shortTime': 'h:mm a', }; - Map nfs = new Map(); + var dfs = {}; /** * [date]: Date to format either as Date object, milliseconds @@ -52,13 +52,13 @@ class DateFilter { if (date is String) date = DateTime.parse(date); if (date is num) date = new DateTime.fromMillisecondsSinceEpoch(date); if (date is! DateTime) return date; - var nf = nfs[format]; - if (nf == null) { + var df = dfs[format]; + if (df == null) { if (MAP.containsKey(format)) { format = MAP[format]; } - nf = new DateFormat(format); + df = new DateFormat(format); } - return nf.format(date); + return df.format(date); } } From 8446b0e9ae6ac5c8bce44c6a2f47f6c94d74e674 Mon Sep 17 00:00:00 2001 From: Ando Yasushi Date: Tue, 18 Feb 2014 23:23:03 +0900 Subject: [PATCH 2/3] fix(DateFilter): set cache set cache --- lib/filter/date.dart | 1 + test/filter/date_spec.dart | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/filter/date.dart b/lib/filter/date.dart index 609f08b4c..fc8c30a1b 100644 --- a/lib/filter/date.dart +++ b/lib/filter/date.dart @@ -58,6 +58,7 @@ class DateFilter { format = MAP[format]; } df = new DateFormat(format); + dfs[format] = df; } return df.format(date); } diff --git a/test/filter/date_spec.dart b/test/filter/date_spec.dart index e508cfe69..7a3e0b363 100644 --- a/test/filter/date_spec.dart +++ b/test/filter/date_spec.dart @@ -3,9 +3,9 @@ library date_spec; import '../_specs.dart'; main() => describe('date', () { - var morning = DateTime.parse('2010-09-03T07:05:08.008Z'); //7am - var noon = DateTime.parse('2010-09-03T12:05:08.012Z'); //12pm - var midnight = DateTime.parse('2010-09-03T12:05:08.123Z'); //12am + var morning = DateTime.parse('2010-09-03T07:05:08.008Z'); //7am + var noon = DateTime.parse('2010-09-03T12:05:08.012Z'); //12pm + var midnight = DateTime.parse('2010-09-03T12:05:08.123Z'); //12am var earlyDate = DateTime.parse('0001-09-03T05:05:08.000Z'); var date; @@ -57,4 +57,13 @@ main() => describe('date', () { expect(date(noon, "shortTime")). toEqual('12:05 PM'); }); + + it('should use cache', () { + + date(noon, "shortTime"); + expect(date.dfs.keys.length).toEqual(1); + + date(noon, "shortTime"); + expect(date.dfs.keys.length).toEqual(1); + }); }); From 40ef0ee45e9c460d113df285485efe0bade6fcd9 Mon Sep 17 00:00:00 2001 From: Ando Yasushi Date: Wed, 19 Feb 2014 00:39:24 +0900 Subject: [PATCH 3/3] refactor(DateFilter): code reviewed --- lib/filter/date.dart | 16 ++++++++-------- test/filter/date_spec.dart | 5 +---- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/lib/filter/date.dart b/lib/filter/date.dart index fc8c30a1b..75d528703 100644 --- a/lib/filter/date.dart +++ b/lib/filter/date.dart @@ -21,8 +21,8 @@ part of angular.filter; * */ @NgFilter(name:'date') -class DateFilter { - static Map MAP = { +class DateFilter implements Function { + static final _MAP = const { 'medium': 'MMM d, y h:mm:ss a', 'short': 'M/d/yy h:mm a', 'fullDate': 'EEEE, MMMM d, y', @@ -33,7 +33,7 @@ class DateFilter { 'shortTime': 'h:mm a', }; - var dfs = {}; + var _dfs = {}; /** * [date]: Date to format either as Date object, milliseconds @@ -47,18 +47,18 @@ class DateFilter { * mediumDate is used * */ - call(date, [format = r'mediumDate']) { + dynamic call(Object date, [String format = 'mediumDate']) { if (date == '' || date == null) return date; if (date is String) date = DateTime.parse(date); if (date is num) date = new DateTime.fromMillisecondsSinceEpoch(date); if (date is! DateTime) return date; - var df = dfs[format]; + var df = _dfs[format]; if (df == null) { - if (MAP.containsKey(format)) { - format = MAP[format]; + if (_MAP.containsKey(format)) { + format = _MAP[format]; } df = new DateFormat(format); - dfs[format] = df; + _dfs[format] = df; } return df.format(date); } diff --git a/test/filter/date_spec.dart b/test/filter/date_spec.dart index 7a3e0b363..2cb48e19d 100644 --- a/test/filter/date_spec.dart +++ b/test/filter/date_spec.dart @@ -58,12 +58,9 @@ main() => describe('date', () { toEqual('12:05 PM'); }); - it('should use cache', () { + it('should use cache without any error', () { date(noon, "shortTime"); - expect(date.dfs.keys.length).toEqual(1); - date(noon, "shortTime"); - expect(date.dfs.keys.length).toEqual(1); }); });