templater: make date wrapper support dot/map operations
authorYuya Nishihara <yuya@tcha.org>
Sat, 24 Mar 2018 17:59:19 +0900
changeset 38286 851fc9d42d6d
parent 38285 8d6109b49b31
child 38287 0fe65bb7e160
templater: make date wrapper support dot/map operations No idea if it will be useful, but it just works.
mercurial/templateutil.py
tests/test-command-template.t
--- 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