diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index 91ac973d8066..b48ee0592099 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, standAlone) { return function(date, formats) { var value = date['get' + name](); - var get = uppercase(shortForm ? ('SHORT' + name) : name); + var propPrefix = (standAlone ? 'STANDALONE' : '') + (shortForm ? 'SHORT' : ''); + var get = uppercase(propPrefix + name); 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, true), 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..5cd751b8c436 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 standAloneMonth = $locale.DATETIME_FORMATS.STANDALONEMONTH; + var september = standAloneMonth[8]; + var standAloneSeptember = 'StandAlone' + september; + + // Overwrite September in STANDALONEMONTH + standAloneMonth[8] = standAloneSeptember; + + expect(date(noon, 'MMMM')).toEqual(september); + expect(date(noon, 'LLLL')).toEqual(standAloneSeptember); + + // Restore September in STANDALONEMONTH + standAloneMonth[8] = september; + })); + 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