##// END OF EJS Templates
show: construct changeset templater during dispatch...
show: construct changeset templater during dispatch Previously, we constructed a formatter from a specific template topic. Then from show() we reached into the internals of the formatter to resolve a template string to be used to construct a changeset templater. A downside to this approach was it limited us to having the entire template defined in a single entry in the map file. You couldn't reference other entries in the map file and this would lead to long templates and redundancy in the map file. This commit teaches @showview how to instantiate a changeset templater so we can construct a templater with full access to the map file. To prove it works, we've split "showwork" into components.

File last commit:

r28957:d813132e default
r33046:11f76825 default
Show More
test-template-engine.t
54 lines | 1.5 KiB | text/troff | Tads3Lexer
/ tests / test-template-engine.t
Matt Mackall
tests: unify test-template-engine
r12493
$ cat > engine.py << EOF
>
> from mercurial import templater
>
> class mytemplater(object):
Yuya Nishihara
templater: load and expand aliases by template engine (API) (issue4842)...
r28957 > def __init__(self, loader, filters, defaults, aliases):
Matt Mackall
tests: unify test-template-engine
r12493 > self.loader = loader
>
> def process(self, t, map):
> tmpl = self.loader(t)
> for k, v in map.iteritems():
> if k in ('templ', 'ctx', 'repo', 'revcache', 'cache'):
> continue
> if hasattr(v, '__call__'):
> v = v(**map)
> v = templater.stringify(v)
> tmpl = tmpl.replace('{{%s}}' % k, v)
> yield tmpl
>
> templater.engines['my'] = mytemplater
> EOF
$ hg init test
$ echo '[extensions]' > test/.hg/hgrc
$ echo "engine = `pwd`/engine.py" >> test/.hg/hgrc
$ cd test
$ cat > mymap << EOF
> changeset = my:changeset.txt
> EOF
$ cat > changeset.txt << EOF
> {{rev}} {{node}} {{author}}
> EOF
$ hg ci -Ama
adding changeset.txt
adding mymap
$ hg log --style=./mymap
0 97e5f848f0936960273bbf75be6388cd0350a32b test
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
epriestley
templatekw: add parent1, parent1node, parent2, parent2node keywords...
r17355 $ cat > changeset.txt << EOF
Bryan O'Sullivan
templatekw: merge, preferring the second implementation
r17358 > {{p1rev}} {{p1node}} {{p2rev}} {{p2node}}
epriestley
templatekw: add parent1, parent1node, parent2, parent2node keywords...
r17355 > EOF
$ hg ci -Ama
$ hg log --style=./mymap
0 97e5f848f0936960273bbf75be6388cd0350a32b -1 0000000000000000000000000000000000000000
-1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000
Yuya Nishihara
templater: give better error message for invalid engine type...
r28831 invalid engine type:
$ echo 'changeset = unknown:changeset.txt' > unknownenginemap
$ hg log --style=./unknownenginemap
abort: invalid template engine: unknown
[255]
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..