##// END OF EJS Templates
test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara -
r36987:452696bf default
parent child Browse files
Show More
@@ -1,74 +1,63 b''
1
1
2 $ cat > engine.py << EOF
2 $ cat > engine.py << EOF
3 >
3 >
4 > from mercurial import (
4 > from mercurial import (
5 > templater,
5 > templater,
6 > templateutil,
6 > templateutil,
7 > )
7 > )
8 >
8 >
9 > class mytemplater(object):
9 > class mytemplater(templater.engine):
10 > def __init__(self, loader, filters, defaults, resources, aliases):
10 > def _load(self, t):
11 > self.loader = loader
11 > return self._loader(t)
12 > self._defaults = defaults
13 > self._resources = resources
14 >
15 > def symbol(self, mapping, key):
16 > return mapping[key]
17 >
18 > def resource(self, mapping, key):
19 > v = self._resources[key]
20 > if v is None:
21 > v = mapping[key]
22 > return v
23 >
12 >
24 > def process(self, t, map):
13 > def process(self, t, map):
25 > tmpl = self.loader(t)
14 > tmpl = self._load(t)
26 > props = self._defaults.copy()
15 > props = self._defaults.copy()
27 > props.update(map)
16 > props.update(map)
28 > for k, v in props.items():
17 > for k, v in props.items():
29 > if k in ('templ', 'ctx', 'repo', 'revcache', 'cache', 'troubles'):
18 > if k in ('templ', 'ctx', 'repo', 'revcache', 'cache', 'troubles'):
30 > continue
19 > continue
31 > if callable(v) and getattr(v, '_requires', None) is None:
20 > if callable(v) and getattr(v, '_requires', None) is None:
32 > props = self._resources.copy()
21 > props = self._resources.copy()
33 > props.update(map)
22 > props.update(map)
34 > v = v(**props)
23 > v = v(**props)
35 > elif callable(v):
24 > elif callable(v):
36 > v = v(self, props)
25 > v = v(self, props)
37 > v = templateutil.stringify(v)
26 > v = templateutil.stringify(v)
38 > tmpl = tmpl.replace('{{%s}}' % k, v)
27 > tmpl = tmpl.replace('{{%s}}' % k, v)
39 > yield tmpl
28 > yield tmpl
40 >
29 >
41 > templater.engines['my'] = mytemplater
30 > templater.engines['my'] = mytemplater
42 > EOF
31 > EOF
43 $ hg init test
32 $ hg init test
44 $ echo '[extensions]' > test/.hg/hgrc
33 $ echo '[extensions]' > test/.hg/hgrc
45 $ echo "engine = `pwd`/engine.py" >> test/.hg/hgrc
34 $ echo "engine = `pwd`/engine.py" >> test/.hg/hgrc
46 $ cd test
35 $ cd test
47 $ cat > mymap << EOF
36 $ cat > mymap << EOF
48 > changeset = my:changeset.txt
37 > changeset = my:changeset.txt
49 > EOF
38 > EOF
50 $ cat > changeset.txt << EOF
39 $ cat > changeset.txt << EOF
51 > {{rev}} {{node}} {{author}}
40 > {{rev}} {{node}} {{author}}
52 > EOF
41 > EOF
53 $ hg ci -Ama
42 $ hg ci -Ama
54 adding changeset.txt
43 adding changeset.txt
55 adding mymap
44 adding mymap
56 $ hg log --style=./mymap
45 $ hg log --style=./mymap
57 0 97e5f848f0936960273bbf75be6388cd0350a32b test
46 0 97e5f848f0936960273bbf75be6388cd0350a32b test
58
47
59 $ cat > changeset.txt << EOF
48 $ cat > changeset.txt << EOF
60 > {{p1rev}} {{p1node}} {{p2rev}} {{p2node}}
49 > {{p1rev}} {{p1node}} {{p2rev}} {{p2node}}
61 > EOF
50 > EOF
62 $ hg ci -Ama
51 $ hg ci -Ama
63 $ hg log --style=./mymap
52 $ hg log --style=./mymap
64 0 97e5f848f0936960273bbf75be6388cd0350a32b -1 0000000000000000000000000000000000000000
53 0 97e5f848f0936960273bbf75be6388cd0350a32b -1 0000000000000000000000000000000000000000
65 -1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000
54 -1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000
66
55
67 invalid engine type:
56 invalid engine type:
68
57
69 $ echo 'changeset = unknown:changeset.txt' > unknownenginemap
58 $ echo 'changeset = unknown:changeset.txt' > unknownenginemap
70 $ hg log --style=./unknownenginemap
59 $ hg log --style=./unknownenginemap
71 abort: invalid template engine: unknown
60 abort: invalid template engine: unknown
72 [255]
61 [255]
73
62
74 $ cd ..
63 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now