# HG changeset patch # User Yuya Nishihara # Date 1441104194 -32400 # Node ID 7b625baed9954391c201e3ad0b6a40f0e2de80e3 # Parent c990afab2243c8031de4f70ceaa0e85e88daa773 util: extract function that parses timezone string It will be used to parse a timezone argument passed to a template function. diff -r c990afab2243 -r 7b625baed995 mercurial/util.py --- a/mercurial/util.py Tue Sep 01 19:04:10 2015 +0900 +++ b/mercurial/util.py Tue Sep 01 19:43:14 2015 +0900 @@ -1371,22 +1371,22 @@ """turn (timestamp, tzoff) tuple into iso 8631 date.""" return datestr(date, format='%Y-%m-%d') +def parsetimezone(tz): + """parse a timezone string and return an offset integer""" + if tz[0] in "+-" and len(tz) == 5 and tz[1:].isdigit(): + sign = (tz[0] == "+") and 1 or -1 + hours = int(tz[1:3]) + minutes = int(tz[3:5]) + return -sign * (hours * 60 + minutes) * 60 + if tz == "GMT" or tz == "UTC": + return 0 + return None + def strdate(string, format, defaults=[]): """parse a localized time string and return a (unixtime, offset) tuple. if the string cannot be parsed, ValueError is raised.""" - def timezone(string): - tz = string.split()[-1] - if tz[0] in "+-" and len(tz) == 5 and tz[1:].isdigit(): - sign = (tz[0] == "+") and 1 or -1 - hours = int(tz[1:3]) - minutes = int(tz[3:5]) - return -sign * (hours * 60 + minutes) * 60 - if tz == "GMT" or tz == "UTC": - return 0 - return None - # NOTE: unixtime = localunixtime + offset - offset, date = timezone(string), string + offset, date = parsetimezone(string.split()[-1]), string if offset is not None: date = " ".join(string.split()[:-1])