wip change fb2 api
[librarian.git] / src / librarian / builders / txt.py
index 8dba4ae..69ddbe2 100644 (file)
@@ -1,6 +1,6 @@
-# coding: utf-8
-from __future__ import unicode_literals
-
+# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
+#
 import io
 from librarian import OutputFile, get_resource
 
@@ -15,14 +15,6 @@ class TxtFragment:
         self.current_margin = 0
         self.starting_block = True
 
-    def push_legacy_margin(self, margin):
-        if margin:
-            if self.pieces:
-                self.pieces[-1] = self.pieces[-1].rstrip(' ')
-            self.pieces.append('\r\n' * margin)
-            self.current_margin += margin
-            self.starting_block = True
-        
     def push_margin(self, margin):
         if margin:
             if self.pieces:
@@ -45,24 +37,30 @@ class TxtFragment:
 class TxtBuilder:
     """
     """
+    build_method_fn = 'txt_build'
     file_extension = "txt"
     identifier = "txt"
+    after_child_fn = 'txt_after_child'
 
+    debug = False
+    orphans = False
+    normalize_whitespace = True
+    
     default_license_description = {
         "pol": (
             "Wszystkie zasoby Wolnych Lektur możesz swobodnie wykorzystywać, "
             "publikować i rozpowszechniać pod warunkiem zachowania warunków "
             "licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur.\n"
-            "Ten utwór jest w domenie publicznej. "
+            "Ten utwór jest w domenie publicznej.\n"
             "Wszystkie materiały dodatkowe (przypisy, motywy literackie) są "
-            "udostępnione na Licencji Wolnej Sztuki 1.3 "
-            "(https://artlibre.org/licence/lal/pl/).\n"
-            "Fundacja Nowoczesna Polska zastrzega sobie prawa do wydania "
+            "udostępnione na Licencji Wolnej Sztuki 1.3: "
+            "https://artlibre.org/licence/lal/pl/\n"
+            "Fundacja Wolne Lektury zastrzega sobie prawa do wydania "
             "krytycznego zgodnie z art. Art.99(2) Ustawy o prawach autorskich "
-            "i prawach pokrewnych. Wykorzystując zasoby z Wolnych Lektur, "
+            "i prawach pokrewnych.\nWykorzystując zasoby z Wolnych Lektur, "
             "należy pamiętać o zapisach licencji oraz zasadach, które "
-            "spisaliśmy w Zasadach wykorzystania Wolnych Lektur "
-            "(https://wolnelektury.pl/info/zasady-wykorzystania/). Zapoznaj "
+            "spisaliśmy w Zasadach wykorzystania Wolnych Lektur: "
+            "https://wolnelektury.pl/info/zasady-wykorzystania/\nZapoznaj "
             "się z nimi, zanim udostępnisz dalej nasze książki."
         )
     }
@@ -74,19 +72,19 @@ class TxtBuilder:
             "licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur.\n"
             "Ten utwór jest jest udostępniony na licencji {meta.license_description} ({meta.license}). "
             "Wszystkie materiały dodatkowe (przypisy, motywy literackie) są "
-            "udostępnione na Licencji Wolnej Sztuki 1.3 "
-            "(https://artlibre.org/licence/lal/pl/).\n"
-            "Fundacja Nowoczesna Polska zastrzega sobie prawa do wydania "
+            "udostępnione na Licencji Wolnej Sztuki 1.3: "
+            "https://artlibre.org/licence/lal/pl/\n"
+            "Fundacja Wolne Lektury zastrzega sobie prawa do wydania "
             "krytycznego zgodnie z art. Art.99(2) Ustawy o prawach autorskich "
-            "i prawach pokrewnych. Wykorzystując zasoby z Wolnych Lektur, "
+            "i prawach pokrewnych.\nWykorzystując zasoby z Wolnych Lektur, "
             "należy pamiętać o zapisach licencji oraz zasadach, które "
-            "spisaliśmy w Zasadach wykorzystania Wolnych Lektur "
-            "(https://wolnelektury.pl/info/zasady-wykorzystania/). Zapoznaj "
+            "spisaliśmy w Zasadach wykorzystania Wolnych Lektur: "
+            "https://wolnelektury.pl/info/zasady-wykorzystania/\nZapoznaj "
             "się z nimi, zanim udostępnisz dalej nasze książki."
         )
     }
 
-    def __init__(self):
+    def __init__(self, base_url=None):
         self.fragments = {
             None: TxtFragment(),
             'header': TxtFragment()
@@ -105,9 +103,6 @@ class TxtBuilder:
     def push_margin(self, margin):
         self.current_fragments[-1].push_margin(margin)
         
-    def push_legacy_margin(self, margin, where=None):
-        self.current_fragments[-1].push_legacy_margin(margin)
-        
     def build(self, document, raw_text=False, **kwargs):
         document.tree.getroot().txt_build(self)
         meta = document.meta
@@ -121,27 +116,26 @@ class TxtBuilder:
                     for translator in meta.translators
                 )
             )
-            #builder.push_margin(2)
-            self.push_legacy_margin(1)
+            self.push_margin(2)
 
         if meta.isbn_txt:
-            #builder.push_margin(2)
-            self.push_legacy_margin(1)
+            self.push_margin(2)
             isbn = meta.isbn_txt
             if isbn.startswith(('ISBN-' , 'ISBN ')):
                 isbn = isbn[5:]
             self.push_text('ISBN {isbn}'.format(isbn=isbn))
             #builder.push_margin(5)
 
-        #builder.push_margin(4)
-        self.push_legacy_margin(1)
+        self.push_margin(4)
         self.exit_fragment()
         
-        text = ''.join(self.fragments['header'].pieces) +  ''.join(self.fragments[None].pieces)
+        text = ''.join(self.fragments[None].pieces).lstrip()
 
         if raw_text:
             result = text
         else:
+            text = ''.join(self.fragments['header'].pieces) +  text
+
             if meta.license:
                 license_description = self.license_description['pol'].format(meta=meta)
             else:
@@ -167,7 +161,7 @@ class TxtBuilder:
 
             funders = ', '.join(meta.funders)
             if funders:
-                funders = u"\n\nPublikację wsparli i wsparły: %s." % funders
+                funders = "\n\nPublikację wsparli i wsparły: %s." % funders
 
             isbn = getattr(meta, 'isbn_txt', None)
             if isbn: