EPUB: Support for subchapters without chapters.
[librarian.git] / src / librarian / elements / footnotes / __init__.py
1 from ..base import WLElement
2
3
4 class Footnote(WLElement):
5     def txt_build(self, builder):
6         pass
7
8     def html_build(self, builder):
9         if not builder.with_footnotes:
10             return
11
12         builder.footnote_counter += 1
13         fn_no = builder.footnote_counter
14         footnote_id = 'footnote-idm{}'.format(self.attrib['_compat_ordered_id'])
15         anchor_id = 'anchor-idm{}'.format(self.attrib['_compat_ordered_id'])
16
17         # Add anchor.
18         builder.start_element(
19             'a',
20             {
21                 "href": '#{}'.format(footnote_id),
22                 "class": "annotation-anchor",
23                 "id": anchor_id,
24             }
25         )
26         builder.push_text('[{}]'.format(fn_no))
27         builder.end_element()
28         
29         # Add actual footnote.
30         builder.enter_fragment('footnotes')
31         builder.start_element('div', {'class': 'fn-{}'.format(self.tag)})
32         builder.push_text('\n') # Compat
33         builder.start_element('a', {'name': footnote_id})
34         builder.end_element()
35         builder.start_element('a', {
36             'href': '#{}'.format(anchor_id), 'class': 'annotation'
37         })
38         builder.push_text('[{}]'.format(fn_no))
39         builder.end_element()
40
41         builder.start_element('p')
42         super(Footnote, self).html_build(builder)
43
44         builder.push_text(' [{}]'.format(self.qualifier))
45         builder.end_element()
46         builder.end_element()
47         builder.exit_fragment()
48
49
50 class PA(Footnote):
51     """Przypis autorski."""
52     @property
53     def qualifier(self):
54         _ = self.gettext
55         return _("author's footnote")
56
57
58 class PT(Footnote):
59     """Przypis tłumacza."""
60     @property
61     def qualifier(self):
62         _ = self.gettext
63         return _("translator's footnote")
64
65
66 class PR(Footnote):
67     """Przypis redakcyjny."""
68     @property
69     def qualifier(self):
70         _ = self.gettext
71         return _("editor's footnote")
72
73
74 class PE(Footnote):
75     """Przypis redakcji źródła."""
76     @property
77     def qualifier(self):
78         _ = self.gettext
79         return _("source editor's footnote")