492 for k, v in ui.configitems('templates')) |
492 for k, v in ui.configitems('templates')) |
493 if tmpl: |
493 if tmpl: |
494 t.cache[''] = tmpl |
494 t.cache[''] = tmpl |
495 return t |
495 return t |
496 |
496 |
497 def templateresources(ui, repo=None): |
497 class templateresources(templater.resourcemapper): |
498 """Create a dict of template resources designed for the default templatekw |
498 """Resource mapper designed for the default templatekw and function""" |
499 and function""" |
499 |
500 resmap = { |
500 def __init__(self, ui, repo=None): |
501 'cache': {}, # for templatekw/funcs to store reusable data |
501 self._resmap = { |
502 'repo': repo, |
502 'cache': {}, # for templatekw/funcs to store reusable data |
503 'ui': ui, |
503 'repo': repo, |
504 } |
504 'ui': ui, |
505 |
505 } |
506 def getsome(context, mapping, key): |
506 |
|
507 def knownkeys(self): |
|
508 return self._knownkeys |
|
509 |
|
510 def lookup(self, context, mapping, key): |
|
511 get = self._gettermap.get(key) |
|
512 if not get: |
|
513 return None |
|
514 return get(self, context, mapping, key) |
|
515 |
|
516 def _getsome(self, context, mapping, key): |
507 v = mapping.get(key) |
517 v = mapping.get(key) |
508 if v is not None: |
518 if v is not None: |
509 return v |
519 return v |
510 return resmap.get(key) |
520 return self._resmap.get(key) |
511 |
521 |
512 def getctx(context, mapping, key): |
522 def _getctx(self, context, mapping, key): |
513 ctx = mapping.get('ctx') |
523 ctx = mapping.get('ctx') |
514 if ctx is not None: |
524 if ctx is not None: |
515 return ctx |
525 return ctx |
516 fctx = mapping.get('fctx') |
526 fctx = mapping.get('fctx') |
517 if fctx is not None: |
527 if fctx is not None: |
518 return fctx.changectx() |
528 return fctx.changectx() |
519 |
529 |
520 def getrepo(context, mapping, key): |
530 def _getrepo(self, context, mapping, key): |
521 ctx = getctx(context, mapping, 'ctx') |
531 ctx = self._getctx(context, mapping, 'ctx') |
522 if ctx is not None: |
532 if ctx is not None: |
523 return ctx.repo() |
533 return ctx.repo() |
524 return getsome(context, mapping, key) |
534 return self._getsome(context, mapping, key) |
525 |
535 |
526 return { |
536 _gettermap = { |
527 'cache': getsome, |
537 'cache': _getsome, |
528 'ctx': getctx, |
538 'ctx': _getctx, |
529 'fctx': getsome, |
539 'fctx': _getsome, |
530 'repo': getrepo, |
540 'repo': _getrepo, |
531 'revcache': getsome, # per-ctx cache; set later |
541 'revcache': _getsome, # per-ctx cache; set later |
532 'ui': getsome, |
542 'ui': _getsome, |
533 } |
543 } |
|
544 _knownkeys = set(_gettermap.keys()) |
534 |
545 |
535 def formatter(ui, out, topic, opts): |
546 def formatter(ui, out, topic, opts): |
536 template = opts.get("template", "") |
547 template = opts.get("template", "") |
537 if template == "json": |
548 if template == "json": |
538 return jsonformatter(ui, out, topic, opts) |
549 return jsonformatter(ui, out, topic, opts) |