Spaces:
Runtime error
Runtime error
File size: 1,214 Bytes
ef3d4ad |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
class CitationManager:
def __init__(self, annotations, client, start=1):
self.start = start
self.body = {}
self.citations = []
for a in annotations:
reference = f'[{start}]'
self.body[a.text] = reference
document = client.files.retrieve(a.file_citation.file_id)
self.citations.append('{} {}:{}--{}'.format(
reference,
document.filename,
a.start_index,
a.end_index,
))
start += 1
def __len__(self):
return len(self.citations)
def __str__(self):
raise NotImplementedError()
def __iter__(self):
raise NotImplementedError()
def replace(self, body):
for i in self:
body = body.replace(*i)
return body
class NumericCitations(CitationManager):
def __str__(self):
return '\n\n{}'.format('\n'.join(self.citations))
def __iter__(self):
for (k, v) in self.body.items():
yield (k, f' {v}')
class NoCitations(CitationManager):
def __str__(self):
return ''
def __iter__(self):
yield from zip(self.body, it.repeat(''))
|