templater: make date wrapper support dot/map operations
No idea if it will be useful, but it just works.
--- a/mercurial/templateutil.py Sat Mar 24 17:54:02 2018 +0900
+++ b/mercurial/templateutil.py Sat Mar 24 17:59:19 2018 +0900
@@ -172,7 +172,7 @@
def tovalue(self, context, mapping):
return self._value
-class date(wrapped):
+class date(mappable, wrapped):
"""Wrapper for date tuple"""
def __init__(self, value):
@@ -192,15 +192,15 @@
def getmax(self, context, mapping):
raise error.ParseError(_('date is not iterable'))
- def itermaps(self, context):
- raise error.ParseError(_("date is not iterable"))
-
def join(self, context, mapping, sep):
raise error.ParseError(_("date is not iterable"))
def show(self, context, mapping):
return '%d %d' % (self._unixtime, self._tzoffset)
+ def tomap(self, context):
+ return {'unixtime': self._unixtime, 'tzoffset': self._tzoffset}
+
def tovalue(self, context, mapping):
return (self._unixtime, self._tzoffset)
--- a/tests/test-command-template.t Sat Mar 24 17:54:02 2018 +0900
+++ b/tests/test-command-template.t Sat Mar 24 17:59:19 2018 +0900
@@ -3398,6 +3398,8 @@
ce3cec86e6c26bd9bdfc590a6b92abc9680f1796
$ hg log -R latesttag -r0 -T '{extras.branch}\n'
default
+ $ hg log -R latesttag -r0 -T '{date.unixtime} {localdate(date, "+0200").tzoffset}\n'
+ 0 -7200
$ hg log -R latesttag -l1 -T '{author.invalid}\n'
hg: parse error: 'test' is not a dictionary