wip change fb2 api
[librarian.git] / src / librarian / elements / poetry / strofa.py
index e925571..93e3a4a 100644 (file)
@@ -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
 from copy import copy
 import re
 from ..base import WLElement
@@ -5,16 +8,17 @@ from .wers import Wers
 
 
 class Strofa(WLElement):
 
 
 class Strofa(WLElement):
-    SHOULD_HAVE_ID = True
+    NUMBERING = 'i'
 
     TXT_TOP_MARGIN = 2
     TXT_BOTTOM_MARGIN = 2
 
     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'
 
 
     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(
     def epub_build(self, builder):
         super().epub_build(builder)
         builder.start_element(
@@ -25,8 +29,8 @@ class Strofa(WLElement):
         )
         builder.push_text('\u00a0');
         builder.end_element()
         )
         builder.push_text('\u00a0');
         builder.end_element()
-    
-    def get_verses(self):
+
+    def preprocess(self):
         from librarian.parser import parser
 
         verses = [
         from librarian.parser import parser
 
         verses = [
@@ -54,15 +58,15 @@ class Strofa(WLElement):
             else:
                 verses[-1].append(child)
 
             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)