X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/db91f942ce46e3af1420f3469a83257ef5aca4c2..011b98a4661b754a0789ae78e145437b5b86e5fe:/src/librarian/elements/poetry/strofa.py diff --git a/src/librarian/elements/poetry/strofa.py b/src/librarian/elements/poetry/strofa.py index a843d20..bccb01b 100644 --- a/src/librarian/elements/poetry/strofa.py +++ b/src/librarian/elements/poetry/strofa.py @@ -1,3 +1,6 @@ +# 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 @@ -5,6 +8,8 @@ from .wers import Wers class Strofa(WLElement): + NUMBERING = 'i' + TXT_TOP_MARGIN = 2 TXT_BOTTOM_MARGIN = 2 TXT_LEGACY_TOP_MARGIN = 1 @@ -23,8 +28,8 @@ class Strofa(WLElement): ) builder.push_text('\u00a0'); builder.end_element() - - def get_verses(self): + + def preprocess(self): from librarian.parser import parser verses = [ @@ -52,15 +57,15 @@ class Strofa(WLElement): 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)