+# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
+#
from copy import copy
import re
from ..base import WLElement
class Strofa(WLElement):
- SHOULD_HAVE_ID = True
+ NUMBERING = 'i'
TXT_TOP_MARGIN = 2
TXT_BOTTOM_MARGIN = 2
- TXT_LEGACY_TOP_MARGIN = 1
- TXT_LEGACY_BOTTOM_MARGIN = 0
EPUB_TAG = HTML_TAG = 'div'
EPUB_CLASS = HTML_CLASS = 'stanza'
+ FB2_TAG = 'stanza'
+
+
def epub_build(self, builder):
super().epub_build(builder)
builder.start_element(
)
builder.push_text('\u00a0');
builder.end_element()
-
- def get_verses(self):
+
+ def preprocess(self):
from librarian.parser import parser
verses = [
else:
verses[-1].append(child)
- for verse in verses:
- verse.stanza = self
- if len(verse) == 1 and isinstance(verse[0], Wers):
- assert not (verse.text or '').strip()
- assert not (verse[0].tail or '').strip()
- yield verse[0]
- else:
- yield verse
+ verses = [
+ verse[0] if len(verse) == 1 and isinstance(verse[0], Wers)
+ else verse
+ for verse in verses
+ ]
- def _build_inner(self, builder, build_method):
- for child in self.get_verses():
- getattr(child, build_method)(builder)
+ while len(self):
+ self.remove(self[0])
+ self.text = None
+
+ for verse in verses:
+ self.append(verse)