util: extract function that parses timezone string
It will be used to parse a timezone argument passed to a template function.
--- 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])