diff options
| author | Di Peng | 2011-06-22 12:33:31 -0700 | 
|---|---|---|
| committer | Di Peng | 2011-06-23 12:06:46 -0700 | 
| commit | b5a510a343270f499cbb8b8a9ac3a3309e9b7ce2 (patch) | |
| tree | 2dc4ed51879300c74a4227e9d5a8260013d75e08 /src | |
| parent | 9ec45ad5c45791c81d4d1909ea1abceedc5ed3e9 (diff) | |
| download | angular.js-b5a510a343270f499cbb8b8a9ac3a3309e9b7ce2.tar.bz2 | |
feat:filter.date: add day/month string format support
Support new date format, specifically day of week/Month of year in string
e.g. {{ someDate | data:"EEE, MMM d, yyyy" }} -> "Wed, Jul 10, 2011"
Closes #396
Diffstat (limited to 'src')
| -rw-r--r-- | src/angular-mocks.js | 5 | ||||
| -rw-r--r-- | src/filters.js | 58 | 
2 files changed, 46 insertions, 17 deletions
| diff --git a/src/angular-mocks.js b/src/angular-mocks.js index 0f806917..887d3520 100644 --- a/src/angular-mocks.js +++ b/src/angular-mocks.js @@ -385,9 +385,12 @@ function TzDate(offset, timestamp) {      return this.origDate.getUTCSeconds();    }; +  this.getDay = function() { +    return this.origDate.getDay(); +  };    //hide all methods not implemented in this mock that the Date prototype exposes -  var unimplementedMethods = ['getDay', 'getMilliseconds', 'getTime', 'getUTCDay', +  var unimplementedMethods = ['getMilliseconds', 'getTime', 'getUTCDay',        'getUTCMilliseconds', 'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',        'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',        'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', diff --git a/src/filters.js b/src/filters.js index 49091e81..491bb88e 100644 --- a/src/filters.js +++ b/src/filters.js @@ -168,31 +168,53 @@ function dateGetter(name, size, offset, trim) {    };  } +function dateStrGetter(name, shortForm) { +  return function(date) { +    var value = date['get' + name](); + +    if(name == 'Month') { +      value = MONTH[value]; +    } else { +      value = DAY[value]; +    } + +    return shortForm ? value.substr(0,3) : value; +  }; +} + +var DAY = 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','); + +var MONTH = 'January,February,March,April,May,June,July,August,September,October,November,December'. +             split(',');  var DATE_FORMATS = {    yyyy: dateGetter('FullYear', 4), -  yy:   dateGetter('FullYear', 2, 0, true), -  MM:   dateGetter('Month', 2, 1), -   M:   dateGetter('Month', 1, 1), -  dd:   dateGetter('Date', 2), -   d:   dateGetter('Date', 1), -  HH:   dateGetter('Hours', 2), -   H:   dateGetter('Hours', 1), -  hh:   dateGetter('Hours', 2, -12), -   h:   dateGetter('Hours', 1, -12), -  mm:   dateGetter('Minutes', 2), -   m:   dateGetter('Minutes', 1), -  ss:   dateGetter('Seconds', 2), -   s:   dateGetter('Seconds', 1), -  a:    function(date){return date.getHours() < 12 ? 'am' : 'pm';}, -  Z:    function(date){ +    yy: dateGetter('FullYear', 2, 0, true), + MMMMM: dateStrGetter('Month'), +   MMM: dateStrGetter('Month', true), +    MM: dateGetter('Month', 2, 1), +     M: dateGetter('Month', 1, 1), +    dd: dateGetter('Date', 2), +     d: dateGetter('Date', 1), +    HH: dateGetter('Hours', 2), +     H: dateGetter('Hours', 1), +    hh: dateGetter('Hours', 2, -12), +     h: dateGetter('Hours', 1, -12), +    mm: dateGetter('Minutes', 2), +     m: dateGetter('Minutes', 1), +    ss: dateGetter('Seconds', 2), +     s: dateGetter('Seconds', 1), +  EEEE: dateStrGetter('Day'), +   EEE: dateStrGetter('Day', true), +     a: function(date){return date.getHours() < 12 ? 'am' : 'pm';}, +     Z: function(date){            var offset = date.getTimezoneOffset();            return padNumber(offset / 60, 2) + padNumber(Math.abs(offset % 60), 2);          }  }; -var DATE_FORMATS_SPLIT = /([^yMdHhmsaZ]*)(y+|M+|d+|H+|h+|m+|s+|a|Z)(.*)/; +var DATE_FORMATS_SPLIT = /([^yMdHhmsaZE]*)(E+|y+|M+|d+|H+|h+|m+|s+|a|Z)(.*)/;  var NUMBER_STRING = /^\d+$/; @@ -209,10 +231,14 @@ var NUMBER_STRING = /^\d+$/;   *   *   * `'yyyy'`: 4 digit representation of year e.g. 2010   *   * `'yy'`: 2 digit representation of year, padded (00-99) + *   * `'MMMMM'`: Month in year (January‒December) + *   * `'MMM'`: Month in year (Jan - Dec)   *   * `'MM'`: Month in year, padded (01‒12)   *   * `'M'`: Month in year (1‒12)   *   * `'dd'`: Day in month, padded (01‒31)   *   * `'d'`: Day in month (1-31) + *   * `'EEEE'`: Day in Week,(Sunday‒Saturday) + *   * `'EEE'`: Day in Week, (Sun-Sat)   *   * `'HH'`: Hour in day, padded (00‒23)   *   * `'H'`: Hour in day (0-23)   *   * `'hh'`: Hour in am/pm, padded (01‒12) | 
