Skip to content

Commit

Permalink
Add parse_timedelta function
Browse files Browse the repository at this point in the history
  • Loading branch information
jlane93 committed Jan 8, 2020
1 parent 3682261 commit 6f7cf32
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions mockerena/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,28 @@ def age(date: Union[datetime.datetime, datetime.date]) -> int:
else now.year - date.year


def parse_timedelta(string: str):
"""
:param string:
:return:
"""

match = re.search(r'(?:(?P<days>[+-]\d+) days, )?(?P<time>(?:\d{1,2}:){2}(?:\d{1,2}))', string)

if not match:
raise TypeError(f"Error: '{string}' is not a valid timedelta string")

time = datetime.datetime.strptime(match.group('time'), "%H:%M:%S")

return datetime.timedelta(
days=int(match.group('days')) if match.group('days') else 0,
hours=time.hour,
minutes=time.minute,
seconds=time.second
)


APPROVED_GLOBALS = {
'abs': abs,
'age': age,
Expand All @@ -59,6 +81,7 @@ def age(date: Union[datetime.datetime, datetime.date]) -> int:
'month': lambda d: d.month if isinstance(d, (datetime.datetime, datetime.date)) else d,
'now': datetime.datetime.now,
'parse_date': datetime.datetime.strptime,
'parse_timedelta': parse_timedelta,
'pow': pow,
'request_param': lambda param: request.args.get(param, None),
'range': range,
Expand Down

0 comments on commit 6f7cf32

Please sign in to comment.