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()