X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/eb25cada3f68db8f58689bff431edd321620fd72..23d025c8875cca1404f274aca7170c9db5e980e7:/src/librarian/elements/base.py?ds=sidebyside diff --git a/src/librarian/elements/base.py b/src/librarian/elements/base.py index 8f4acc5..2d656ae 100644 --- a/src/librarian/elements/base.py +++ b/src/librarian/elements/base.py @@ -37,7 +37,9 @@ class WLElement(etree.ElementBase): EPUB_ATTR = {} EPUB_CLASS = None EPUB_START_CHUNK = False - + + FB2_TAG = None + CAN_HAVE_TEXT = True STRIP = False NUMBERING = None @@ -133,7 +135,8 @@ class WLElement(etree.ElementBase): return text - def _build_inner(self, builder, build_method): + def build_inner(self, builder): + build_method = builder.build_method_fn child_count = len(self) if self.CAN_HAVE_TEXT and self.text: text = self.normalize_text(self.text, builder) @@ -166,18 +169,18 @@ class WLElement(etree.ElementBase): def txt_after_child(self, builder, child_count): pass - def _txt_build_inner(self, builder): - self._build_inner(builder, 'txt_build') + def txt_build_inner(self, builder): + self.build_inner(builder) def txt_build(self, builder): builder.push_margin(self.TXT_TOP_MARGIN) builder.push_text(self.TXT_PREFIX, True) - self._txt_build_inner(builder) + self.txt_build_inner(builder) builder.push_text(self.TXT_SUFFIX, True) builder.push_margin(self.TXT_BOTTOM_MARGIN) - def _html_build_inner(self, builder): - self._build_inner(builder, 'html_build') + def html_build_inner(self, builder): + self.build_inner(builder) def get_html_attr(self, builder): attr = self.HTML_ATTR.copy() @@ -204,12 +207,31 @@ class WLElement(etree.ElementBase): self.get_html_attr(builder), ) - self._html_build_inner(builder) + self.html_build_inner(builder) if self.HTML_TAG: builder.end_element() - def _epub_build_inner(self, builder): - self._build_inner(builder, 'epub_build') + def fb2_build(self, builder): + if self.SECTION_PRECEDENCE: + builder.start_section(self.SECTION_PRECEDENCE) + builder.start_element('title') + builder.start_element('p') + + if self.FB2_TAG: + builder.start_element( + self.FB2_TAG, + #self.get_fb2_attr(builder), + ) + + self.build_inner(builder) + if self.FB2_TAG: + builder.end_element() + if self.SECTION_PRECEDENCE: + builder.end_element() + builder.end_element() + + def epub_build_inner(self, builder): + self.build_inner(builder) def get_epub_attr(self, builder): attr = self.EPUB_ATTR.copy() @@ -255,7 +277,7 @@ class WLElement(etree.ElementBase): attr ) - self._epub_build_inner(builder) + self.epub_build_inner(builder) if self.EPUB_TAG: builder.end_element()