Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/util.py @ 18537:ae60735e37d2
dates: support 'today' and 'yesterday' in parsedate (issue3764)
Adding support to parsedate in util module to understand the more idiomatic
dates 'today' and 'yesterday'.
Added unified tests and docstring tests for added functionality.
author | Paul Cavallaro <ptc@fb.com> |
---|---|
date | Wed, 23 Jan 2013 09:51:45 -0800 |
parents | 614f769e6aa7 |
children | 2251b3184e6e |
comparison
equal
deleted
inserted
replaced
18536:ae645d4f084c | 18537:ae60735e37d2 |
---|---|
1025 def parsedate(date, formats=None, bias={}): | 1025 def parsedate(date, formats=None, bias={}): |
1026 """parse a localized date/time and return a (unixtime, offset) tuple. | 1026 """parse a localized date/time and return a (unixtime, offset) tuple. |
1027 | 1027 |
1028 The date may be a "unixtime offset" string or in one of the specified | 1028 The date may be a "unixtime offset" string or in one of the specified |
1029 formats. If the date already is a (unixtime, offset) tuple, it is returned. | 1029 formats. If the date already is a (unixtime, offset) tuple, it is returned. |
1030 | |
1031 >>> parsedate(' today ') == parsedate(\ | |
1032 datetime.date.today().strftime('%b %d')) | |
1033 True | |
1034 >>> parsedate( 'yesterday ') == parsedate((datetime.date.today() -\ | |
1035 datetime.timedelta(days=1)\ | |
1036 ).strftime('%b %d')) | |
1037 True | |
1030 """ | 1038 """ |
1031 if not date: | 1039 if not date: |
1032 return 0, 0 | 1040 return 0, 0 |
1033 if isinstance(date, tuple) and len(date) == 2: | 1041 if isinstance(date, tuple) and len(date) == 2: |
1034 return date | 1042 return date |
1035 if not formats: | 1043 if not formats: |
1036 formats = defaultdateformats | 1044 formats = defaultdateformats |
1037 date = date.strip() | 1045 date = date.strip() |
1046 | |
1047 if date == _('today'): | |
1048 date = datetime.date.today().strftime('%b %d') | |
1049 elif date == _('yesterday'): | |
1050 date = (datetime.date.today() - | |
1051 datetime.timedelta(days=1)).strftime('%b %d') | |
1052 | |
1038 try: | 1053 try: |
1039 when, offset = map(int, date.split(' ')) | 1054 when, offset = map(int, date.split(' ')) |
1040 except ValueError: | 1055 except ValueError: |
1041 # fill out defaults | 1056 # fill out defaults |
1042 now = makedate() | 1057 now = makedate() |