comparison mercurial/templatekw.py @ 33017:c31d45623304

py3: convert kwargs' keys' to str using pycompat.strkwargs() On Python 3, we must have keys of keyword arguments as str.
author Pulkit Goyal <7895pulkit@gmail.com>
date Thu, 22 Jun 2017 03:16:16 +0530
parents f66be4caeaab
children de8e3681c402
comparison
equal deleted inserted replaced
33016:4e6dc34b5d7a 33017:c31d45623304
117 map, expand it instead of 'foo' for last key. 117 map, expand it instead of 'foo' for last key.
118 118
119 expand 'end_foos'. 119 expand 'end_foos'.
120 ''' 120 '''
121 templ = mapping['templ'] 121 templ = mapping['templ']
122 strmapping = pycompat.strkwargs(mapping)
122 if not plural: 123 if not plural:
123 plural = name + 's' 124 plural = name + 's'
124 if not values: 125 if not values:
125 noname = 'no_' + plural 126 noname = 'no_' + plural
126 if noname in templ: 127 if noname in templ:
127 yield templ(noname, **mapping) 128 yield templ(noname, **strmapping)
128 return 129 return
129 if name not in templ: 130 if name not in templ:
130 if isinstance(values[0], bytes): 131 if isinstance(values[0], bytes):
131 yield separator.join(values) 132 yield separator.join(values)
132 else: 133 else:
133 for v in values: 134 for v in values:
134 yield dict(v, **mapping) 135 yield dict(v, **strmapping)
135 return 136 return
136 startname = 'start_' + plural 137 startname = 'start_' + plural
137 if startname in templ: 138 if startname in templ:
138 yield templ(startname, **mapping) 139 yield templ(startname, **strmapping)
139 vmapping = mapping.copy() 140 vmapping = mapping.copy()
140 def one(v, tag=name): 141 def one(v, tag=name):
141 try: 142 try:
142 vmapping.update(v) 143 vmapping.update(v)
143 except (AttributeError, ValueError): 144 except (AttributeError, ValueError):
144 try: 145 try:
145 for a, b in v: 146 for a, b in v:
146 vmapping[a] = b 147 vmapping[a] = b
147 except ValueError: 148 except ValueError:
148 vmapping[name] = v 149 vmapping[name] = v
149 return templ(tag, **vmapping) 150 return templ(tag, **pycompat.strkwargs(vmapping))
150 lastname = 'last_' + name 151 lastname = 'last_' + name
151 if lastname in templ: 152 if lastname in templ:
152 last = values.pop() 153 last = values.pop()
153 else: 154 else:
154 last = None 155 last = None
156 yield one(v) 157 yield one(v)
157 if last is not None: 158 if last is not None:
158 yield one(last, tag=lastname) 159 yield one(last, tag=lastname)
159 endname = 'end_' + plural 160 endname = 'end_' + plural
160 if endname in templ: 161 if endname in templ:
161 yield templ(endname, **mapping) 162 yield templ(endname, **strmapping)
162 163
163 def _formatrevnode(ctx): 164 def _formatrevnode(ctx):
164 """Format changeset as '{rev}:{node|formatnode}', which is the default 165 """Format changeset as '{rev}:{node|formatnode}', which is the default
165 template provided by cmdutil.changeset_templater""" 166 template provided by cmdutil.changeset_templater"""
166 repo = ctx.repo() 167 repo = ctx.repo()