diff mercurial/formatter.py @ 36445:e8d37838f5df

templatekw: add 'requires' flag to switch to exception-safe interface The current templatekw interface, f(repo, ctx, templ, **args), is horrible because it's quite easy to encounter TypeError, ValueError, etc. It's also bad for Python 3 porting due to the **kwargs issue. This patch introduces a flag to switch to new f(context, mapping) API seen in templater functions. The requirement spec isn't verified (yet) because context.resource() can gracefully raise a ResourceUnavailable exception, but it's planned to be used as a filter in the help, such as "Revision Keywords" (if 'ctx' in requires), "File Keywords" (if 'fctx' in requires), etc. showauthor() is ported to the new API as an example. 20 more follows.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 25 Feb 2018 13:24:35 +0900
parents b44fac3a49fb
children c6061cadb400
line wrap: on
line diff
--- a/mercurial/formatter.py	Sun Feb 25 12:50:30 2018 +0900
+++ b/mercurial/formatter.py	Sun Feb 25 13:24:35 2018 +0900
@@ -383,9 +383,7 @@
             return
         ref = self._parts[part]
 
-        # TODO: add support for filectx. probably each template keyword or
-        # function will have to declare dependent resources. e.g.
-        # @templatekeyword(..., requires=('ctx',))
+        # TODO: add support for filectx
         props = {}
         # explicitly-defined fields precede templatekw
         props.update(item)