From 9b0fdf6660735b6ac23bae403e846597fcd598f8 Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Thu, 11 Feb 2016 20:49:43 +0200 Subject: [PATCH 1/2] feat(dateFilter): add support for STANDALONEMONTH in format (`LLLL`) Fixes #13999 --- src/ng/filter/filters.js | 9 ++++++--- test/ng/filter/filtersSpec.js | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index 91ac973d8066..56f94b91d10b 100644 --- a/src/ng/filter/filters.js +++ b/src/ng/filter/filters.js @@ -358,10 +358,11 @@ function dateGetter(name, size, offset, trim) { }; } -function dateStrGetter(name, shortForm) { +function dateStrGetter(name, shortForm, formatProp) { return function(date, formats) { var value = date['get' + name](); - var get = uppercase(shortForm ? ('SHORT' + name) : name); + var propName = formatProp || name; + var get = uppercase(shortForm ? ('SHORT' + propName) : propName); return formats[get][value]; }; @@ -423,6 +424,7 @@ var DATE_FORMATS = { MMM: dateStrGetter('Month', true), MM: dateGetter('Month', 2, 1), M: dateGetter('Month', 1, 1), + LLLL: dateStrGetter('Month', false, 'StandaloneMonth'), dd: dateGetter('Date', 2), d: dateGetter('Date', 1), HH: dateGetter('Hours', 2), @@ -448,7 +450,7 @@ var DATE_FORMATS = { GGGG: longEraGetter }; -var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, +var DATE_FORMATS_SPLIT = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, NUMBER_STRING = /^\-?\d+$/; /** @@ -468,6 +470,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+| * * `'MMM'`: Month in year (Jan-Dec) * * `'MM'`: Month in year, padded (01-12) * * `'M'`: Month in year (1-12) + * * `'LLLL'`: Stand-alone month in year (January-December) * * `'dd'`: Day in month, padded (01-31) * * `'d'`: Day in month (1-31) * * `'EEEE'`: Day in Week,(Sunday-Saturday) diff --git a/test/ng/filter/filtersSpec.js b/test/ng/filter/filtersSpec.js index 3972e5d6c90a..26c9f5c8a674 100644 --- a/test/ng/filter/filtersSpec.js +++ b/test/ng/filter/filtersSpec.js @@ -349,6 +349,21 @@ describe('filters', function() { toEqual('September 03, 2010 Anno Domini'); }); + it('should support STANDALONEMONTH in format (`LLLL`)', inject(function($locale) { + var sam = $locale.DATETIME_FORMATS.STANDALONEMONTH; + var _sept = sam[8]; + var _saSept = 'standalone-' + _sept; + + // Overwrite September in STANDALONEMONTH + sam[8] = _saSept; + + expect(date(noon, 'MMMM')).toEqual(_sept); + expect(date(noon, 'LLLL')).toEqual(_saSept); + + // Restore September in STANDALONEMONTH + sam[8] = _sept; + })); + it('should accept negative numbers as strings', function() { //Note: this tests a timestamp set for 3 days before the unix epoch. //The behavior of `date` depends on your timezone, which is why we check just From 566797eecd7f28d4d77ce2b708318114d530ae34 Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Fri, 12 Feb 2016 12:43:36 +0200 Subject: [PATCH 2/2] fixup 1 --- src/ng/filter/filters.js | 8 ++++---- test/ng/filter/filtersSpec.js | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index 56f94b91d10b..b48ee0592099 100644 --- a/src/ng/filter/filters.js +++ b/src/ng/filter/filters.js @@ -358,11 +358,11 @@ function dateGetter(name, size, offset, trim) { }; } -function dateStrGetter(name, shortForm, formatProp) { +function dateStrGetter(name, shortForm, standAlone) { return function(date, formats) { var value = date['get' + name](); - var propName = formatProp || name; - var get = uppercase(shortForm ? ('SHORT' + propName) : propName); + var propPrefix = (standAlone ? 'STANDALONE' : '') + (shortForm ? 'SHORT' : ''); + var get = uppercase(propPrefix + name); return formats[get][value]; }; @@ -424,7 +424,7 @@ var DATE_FORMATS = { MMM: dateStrGetter('Month', true), MM: dateGetter('Month', 2, 1), M: dateGetter('Month', 1, 1), - LLLL: dateStrGetter('Month', false, 'StandaloneMonth'), + LLLL: dateStrGetter('Month', false, true), dd: dateGetter('Date', 2), d: dateGetter('Date', 1), HH: dateGetter('Hours', 2), diff --git a/test/ng/filter/filtersSpec.js b/test/ng/filter/filtersSpec.js index 26c9f5c8a674..5cd751b8c436 100644 --- a/test/ng/filter/filtersSpec.js +++ b/test/ng/filter/filtersSpec.js @@ -350,18 +350,18 @@ describe('filters', function() { }); it('should support STANDALONEMONTH in format (`LLLL`)', inject(function($locale) { - var sam = $locale.DATETIME_FORMATS.STANDALONEMONTH; - var _sept = sam[8]; - var _saSept = 'standalone-' + _sept; + var standAloneMonth = $locale.DATETIME_FORMATS.STANDALONEMONTH; + var september = standAloneMonth[8]; + var standAloneSeptember = 'StandAlone' + september; // Overwrite September in STANDALONEMONTH - sam[8] = _saSept; + standAloneMonth[8] = standAloneSeptember; - expect(date(noon, 'MMMM')).toEqual(_sept); - expect(date(noon, 'LLLL')).toEqual(_saSept); + expect(date(noon, 'MMMM')).toEqual(september); + expect(date(noon, 'LLLL')).toEqual(standAloneSeptember); // Restore September in STANDALONEMONTH - sam[8] = _sept; + standAloneMonth[8] = september; })); it('should accept negative numbers as strings', function() {