templater: load aliases from [templatealias] section in map file
This seems sometimes useful as an alias can be a function, but a template
fragment can't.
--- a/mercurial/formatter.py Sat Oct 14 17:51:01 2017 +0900
+++ b/mercurial/formatter.py Sat Oct 14 18:06:42 2017 +0900
@@ -418,8 +418,8 @@
A map file defines a stand-alone template environment. If a map file
selected, all templates defined in the file will be loaded, and the
- template matching the given topic will be rendered. No aliases will be
- loaded from user config.
+ template matching the given topic will be rendered. Aliases won't be
+ loaded from user config, but from the map file.
If no map file selected, all templates in [templates] section will be
available as well as aliases in [templatealias].
--- a/mercurial/templater.py Sat Oct 14 17:51:01 2017 +0900
+++ b/mercurial/templater.py Sat Oct 14 18:06:42 2017 +0900
@@ -1344,6 +1344,7 @@
cache = {}
tmap = {}
+ aliases = []
val = conf.get('templates', '__base__')
if val and val[0] not in "'\"":
@@ -1362,7 +1363,7 @@
path = p3
break
- cache, tmap = _readmapfile(path)
+ cache, tmap, aliases = _readmapfile(path)
for key, val in conf['templates'].items():
if not val:
@@ -1378,7 +1379,8 @@
if ':' in val[1]:
val = val[1].split(':', 1)
tmap[key] = val[0], os.path.join(base, val[1])
- return cache, tmap
+ aliases.extend(conf['templatealias'].items())
+ return cache, tmap, aliases
class TemplateNotFound(error.Abort):
pass
@@ -1412,9 +1414,10 @@
minchunk=1024, maxchunk=65536):
"""Create templater from the specified map file"""
t = cls(filters, defaults, cache, [], minchunk, maxchunk)
- cache, tmap = _readmapfile(mapfile)
+ cache, tmap, aliases = _readmapfile(mapfile)
t.cache.update(cache)
t.map = tmap
+ t._aliases = aliases
return t
def __contains__(self, key):
--- a/tests/test-command-template.t Sat Oct 14 17:51:01 2017 +0900
+++ b/tests/test-command-template.t Sat Oct 14 18:06:42 2017 +0900
@@ -259,11 +259,13 @@
$ hg log -l1 -T./map-simple
8
- a map file may have [templates] section:
+ a map file may have [templates] and [templatealias] sections:
$ cat <<'EOF' > map-simple
> [templates]
- > changeset = "{rev}\n"
+ > changeset = "{a}\n"
+ > [templatealias]
+ > a = rev
> EOF
$ hg log -l1 -T./map-simple
8
@@ -277,6 +279,8 @@
> EOF
$ HGRCPATH=./myhgrc hg log -l1 -Tfoo
8
+ $ HGRCPATH=./myhgrc hg log -l1 -T'{a}\n'
+ 8
Test template map inheritance