Mercurial > evolve
comparison hgext3rd/topic/__init__.py @ 4078:da6ce6d446b9 stable
topic: rework topic templatekw declaration to be 4.5 compatible again
Mercurial prior to 4.5 does not have a requires keyword, so we need a
compatibility layer.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 Sep 2018 22:47:18 +0200 |
parents | d54a4b9c1d01 |
children | 8d8f08245f97 |
comparison
equal
deleted
inserted
replaced
4073:d54a4b9c1d01 | 4078:da6ce6d446b9 |
---|---|
132 patch, | 132 patch, |
133 phases, | 133 phases, |
134 registrar, | 134 registrar, |
135 scmutil, | 135 scmutil, |
136 templatefilters, | 136 templatefilters, |
137 templatekw, | |
137 util, | 138 util, |
138 ) | 139 ) |
139 | 140 |
140 from . import ( | 141 from . import ( |
141 compat, | 142 compat, |
225 or not ui._knownconfig['devel'].get('random')): | 226 or not ui._knownconfig['devel'].get('random')): |
226 extraitem('devel', 'randomseed', | 227 extraitem('devel', 'randomseed', |
227 default=None, | 228 default=None, |
228 ) | 229 ) |
229 | 230 |
231 # we need to do old style declaration for <= 4.5 | |
230 templatekeyword = registrar.templatekeyword() | 232 templatekeyword = registrar.templatekeyword() |
233 post45template = 'requires=' in templatekeyword.__doc__ | |
231 | 234 |
232 def _contexttopic(self, force=False): | 235 def _contexttopic(self, force=False): |
233 if not (force or self.mutable()): | 236 if not (force or self.mutable()): |
234 return '' | 237 return '' |
235 return self.extra().get(constants.extrakey, '') | 238 return self.extra().get(constants.extrakey, '') |
348 except (KeyError, AttributeError): | 351 except (KeyError, AttributeError): |
349 pass | 352 pass |
350 | 353 |
351 cmdutil.summaryhooks.add('topic', summaryhook) | 354 cmdutil.summaryhooks.add('topic', summaryhook) |
352 | 355 |
356 if not post45template: | |
357 templatekw.keywords['topic'] = topickw | |
353 # Wrap workingctx extra to return the topic name | 358 # Wrap workingctx extra to return the topic name |
354 extensions.wrapfunction(context.workingctx, '__init__', wrapinit) | 359 extensions.wrapfunction(context.workingctx, '__init__', wrapinit) |
355 # Wrap changelog.add to drop empty topic | 360 # Wrap changelog.add to drop empty topic |
356 extensions.wrapfunction(changelog.changelog, 'add', wrapadd) | 361 extensions.wrapfunction(changelog.changelog, 'add', wrapadd) |
357 | 362 |
519 if util.safehasattr(repo, 'names'): | 524 if util.safehasattr(repo, 'names'): |
520 repo.names.addnamespace(namespaces.namespace( | 525 repo.names.addnamespace(namespaces.namespace( |
521 'topics', 'topic', namemap=_namemap, nodemap=_nodemap, | 526 'topics', 'topic', namemap=_namemap, nodemap=_nodemap, |
522 listnames=lambda repo: repo.topics)) | 527 listnames=lambda repo: repo.topics)) |
523 | 528 |
524 @templatekeyword('topic', requires={'ctx'}) | 529 if post45template: |
525 def topickw(context, mapping): | 530 @templatekeyword('topic', requires={'ctx'}) |
526 """:topic: String. The topic of the changeset""" | 531 def topickw(context, mapping): |
527 ctx = context.resource(mapping, 'ctx') | 532 """:topic: String. The topic of the changeset""" |
528 return ctx.topic() | 533 ctx = context.resource(mapping, 'ctx') |
534 return ctx.topic() | |
535 else: | |
536 def topickw(**args): | |
537 """:topic: String. The topic of the changeset""" | |
538 return args['ctx'].topic() | |
529 | 539 |
530 def wrapinit(orig, self, repo, *args, **kwargs): | 540 def wrapinit(orig, self, repo, *args, **kwargs): |
531 orig(self, repo, *args, **kwargs) | 541 orig(self, repo, *args, **kwargs) |
532 if getattr(repo, 'currenttopic', ''): | 542 if getattr(repo, 'currenttopic', ''): |
533 self._extra[constants.extrakey] = repo.currenttopic | 543 self._extra[constants.extrakey] = repo.currenttopic |