Skip to content

Commit

Permalink
Count relevant verses for inscriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
thvitt committed May 6, 2019
1 parent 1bc15d1 commit 75c7390
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
5 changes: 3 additions & 2 deletions src/macrogen/report.py
Expand Up @@ -1178,6 +1178,7 @@ def report_inscriptions(info: MacrogenesisInfo):
# all documents that have inscriptions in their textual transcript
from .witnesses import all_documents
docs = all_documents()
witinfo = WitInscrInfo.get()
docs_by_uri = {doc.uri: doc for doc in docs}
tt_inscriptions = {doc.uri: doc.inscriptions for doc in docs if doc.inscriptions}

Expand Down Expand Up @@ -1223,8 +1224,8 @@ def ghlink(path: Path):
ttlink = ghlink(document.text_transcript)
if doc_tt_inscriptions:
transcript_links = '<br/>'.join(
f'<a href="{ttlink}#L{i.getparent().sourceline}">{i}</a>' for i in
sorted(doc_tt_inscriptions))
f"""<a href="{ttlink}#L{i.getparent().sourceline}">{i}</a> <small class="pure-fade">({witinfo.resolve(doc_uri, inscription=i).covered_lines()} V.)</small>"""
for i in sorted(doc_tt_inscriptions))
else:
transcript_links = f'<a href="{ttlink}">(keine)</a>'
else:
Expand Down
18 changes: 17 additions & 1 deletion src/macrogen/witnesses.py
@@ -1,7 +1,8 @@
import re
from collections import defaultdict
from itertools import chain
from pathlib import Path
from typing import List, Optional, Dict
from typing import List, Optional, Dict, Union
import reprlib

from .config import config
Expand Down Expand Up @@ -201,6 +202,8 @@ def __init__(self, document: BaseDocument, json: dict):
self.intervals = json['intervals']
self._init_relevant_scenes()

def covered_lines(self):
return len(set(chain.from_iterable((range(i['start'], i['end']+1) for i in self.intervals))))


class DocumentCoverage(BaseDocument, IntervalsMixin):
Expand All @@ -222,8 +225,11 @@ def __init__(self):
bargraph = config.genetic_bar_graph
self.documents = [DocumentCoverage(doc) for doc in bargraph]
self.by_scene: Dict[Scene, Union[InscriptionCoverage, DocumentCoverage]] = defaultdict(list)
self.by_uri: Dict[str, Union[InscriptionCoverage, DocumentCoverage]] = dict()
for doc in self.documents:
self.by_uri[doc.uri] = doc
for inscription in doc.inscriptions:
self.by_uri[inscription.uri] = inscription
for scene in inscription.relevant_scenes:
self.by_scene[scene].append(inscription)
for scene in doc.relevant_scenes:
Expand All @@ -237,6 +243,16 @@ def get(cls):
cls._instance = WitInscrInfo()
return cls._instance

def resolve(self, arg: str, inscription: Optional[str]=None):
if arg.startswith('faust://'):
uri = arg
else:
uri = faust_uri(arg, inscription=inscription)
if inscription is not None and uri.startswith('faust://document/'):
uri = "/".join((uri.replace('faust://document', 'faust://inscription'), inscription))
return self.by_uri[uri]




def all_documents(path: Optional[Path] = None):
Expand Down

0 comments on commit 75c7390

Please sign in to comment.