Mercurial > hg-stable
changeset 37073:1101d6747d2d
templater: drop 'templ' from resources dict
Partially resolves cycle, templ -> context -> templ. This will make it easier
to replace the resources dict with new immutable resource mapper interface.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 16 Mar 2018 23:09:21 +0900 |
parents | 724f2e21d870 |
children | d3f7930a9563 |
files | mercurial/templatekw.py mercurial/templater.py mercurial/templateutil.py |
diffstat | 3 files changed, 5 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/templatekw.py Fri Mar 16 23:01:51 2018 +0900 +++ b/mercurial/templatekw.py Fri Mar 16 23:09:21 2018 +0900 @@ -35,19 +35,8 @@ compatlist = templateutil.compatlist _showcompatlist = templateutil._showcompatlist -# TODO: temporary hack for porting; will be removed soon -class _fakecontextwrapper(object): - def __init__(self, templ): - self._templ = templ - - def preload(self, t): - return t in self._templ - - def process(self, t, mapping): - return self._templ.generatenamed(t, mapping) - def _showlist(name, values, templ, mapping, plural=None, separator=' '): - context = _fakecontextwrapper(templ) + context = templ # this is actually a template context, not a templater return _showcompatlist(context, mapping, name, values, plural, separator) def showdict(name, data, mapping, plural=None, key='key', value='value',
--- a/mercurial/templater.py Fri Mar 16 23:01:51 2018 +0900 +++ b/mercurial/templater.py Fri Mar 16 23:09:21 2018 +0900 @@ -738,8 +738,7 @@ self.filters = templatefilters.filters.copy() self.filters.update(filters) self.defaults = defaults - self._resources = {'templ': lambda context, mapping, key: self} - self._resources.update(resources) + self._resources = resources self._aliases = aliases self.minchunk, self.maxchunk = minchunk, maxchunk self.ecache = {}
--- a/mercurial/templateutil.py Fri Mar 16 23:01:51 2018 +0900 +++ b/mercurial/templateutil.py Fri Mar 16 23:09:21 2018 +0900 @@ -348,8 +348,11 @@ v = default if callable(v) and getattr(v, '_requires', None) is None: # old templatekw: expand all keywords and resources + # (TODO: deprecate this after porting web template keywords to new API) props = {k: f(context, mapping, k) for k, f in context._resources.items()} + # pass context to _showcompatlist() through templatekw._showlist() + props['templ'] = context props.update(mapping) return v(**pycompat.strkwargs(props)) if callable(v):