Mercurial > public > mercurial-scm > hg-stable
diff mercurial/formatter.py @ 36985:255f635c3204
templater: convert resources to a table of callables for future extension
I'm going to add a full templating support to the annotate command. As the
annotate is a filectx-oriented command, we'll need a way to look up a ctx
from a bounded fctx only when necessary.
This is the minimal change to support that. I'm thinking of defining a proper
interface to look up template resources to fix other issues, but that isn't
ready yet.
(Changes from V1: just updated tests and patch descriptions.)
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 11 Mar 2018 21:05:29 +0900 |
parents | 32f9b7e3f056 |
children | 036e4483d3a1 |
line wrap: on
line diff
--- a/mercurial/formatter.py Sat Mar 17 21:46:17 2018 -0400 +++ b/mercurial/formatter.py Sun Mar 11 21:05:29 2018 +0900 @@ -501,14 +501,23 @@ def templateresources(ui, repo=None): """Create a dict of template resources designed for the default templatekw and function""" - return { + resmap = { 'cache': {}, # for templatekw/funcs to store reusable data - 'ctx': None, 'repo': repo, - 'revcache': None, # per-ctx cache; set later 'ui': ui, } + def getsome(context, mapping, key): + return resmap.get(key) + + return { + 'cache': getsome, + 'ctx': getsome, + 'repo': getsome, + 'revcache': getsome, # per-ctx cache; set later + 'ui': getsome, + } + def formatter(ui, out, topic, opts): template = opts.get("template", "") if template == "json":