summaryrefslogtreecommitdiffstats
path: root/gitsrht/annotations.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitsrht/annotations.py')
-rw-r--r--gitsrht/annotations.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/gitsrht/annotations.py b/gitsrht/annotations.py
index b9508fd..aa31ff9 100644
--- a/gitsrht/annotations.py
+++ b/gitsrht/annotations.py
@@ -200,16 +200,23 @@ def validate_annotation(valid, anno):
"f'{field}' must be a string")
class AnnotatedFormatter(_BaseFormatter):
- def __init__(self, annos, link_prefix):
+ def __init__(self, get_annos, link_prefix):
super().__init__()
- self.annos = dict()
+ self.get_annos = get_annos
self.link_prefix = link_prefix
- for anno in (annos or list()):
+
+ @property
+ def annos(self):
+ if hasattr(self, "_annos"):
+ return self._annos
+ self._annos = dict()
+ for anno in (self.get_annos() or list()):
lineno = int(anno["lineno"])
- self.annos.setdefault(lineno, list())
- self.annos[lineno].append(anno)
- self.annos[lineno] = sorted(self.annos[lineno],
+ self._annos.setdefault(lineno, list())
+ self._annos[lineno].append(anno)
+ self._annos[lineno] = sorted(self._annos[lineno],
key=lambda anno: anno.get("from", -1))
+ return self._annos
def _annotate_token(self, token, colno, annos):
# TODO: Extend this to support >1 anno per token