Basic biblical tools.
[librarian.git] / src / librarian / builders / txt.py
index 4023814..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,28 +37,54 @@ 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": (
-            "Ten utwór nie jest objęty majątkowym prawem autorskim "
-            "i znajduje się w domenie publicznej, co oznacza że "
-            "możesz go swobodnie wykorzystywać, publikować "
-            "i rozpowszechniać. Jeśli utwór opatrzony jest "
-            "dodatkowymi materiałami (przypisy, motywy literackie "
-            "etc.), które podlegają prawu autorskiemu, to te "
-            "dodatkowe materiały udostępnione są na licencji "
-            "Creative Commons Uznanie Autorstwa – Na Tych Samych "
-            "Warunkach 3.0 PL "
-            "(http://creativecommons.org/licenses/by-sa/3.0/)"
+            "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.\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 Wolne Lektury zastrzega sobie prawa do wydania "
+            "krytycznego zgodnie z art. Art.99(2) Ustawy o prawach autorskich "
+            "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/\nZapoznaj "
+            "się z nimi, zanim udostępnisz dalej nasze książki."
         )
     }
     license_description = {
-        "pol": "Ten utwór jest udostępniony na licencji {meta.license_description}: \n{meta.license}",
+        "pol": (
+            #"Ten utwór jest udostępniony na licencji {meta.license_description}: \n{meta.license}",
+            "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 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 Wolne Lektury zastrzega sobie prawa do wydania "
+            "krytycznego zgodnie z art. Art.99(2) Ustawy o prawach autorskich "
+            "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/\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()
@@ -85,39 +103,39 @@ 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):
+    def build(self, document, raw_text=False, **kwargs):
         document.tree.getroot().txt_build(self)
         meta = document.meta
 
         self.enter_fragment('header')
         if meta.translators:
-            self.push_text("tłum. ", 'header')
-            for translator in meta.translators:
-                self.push_text(translator.readable())
-            #builder.push_margin(2)
-            self.push_legacy_margin(1)
+            self.push_text("tłum. ")
+            self.push_text(
+                ", ".join(
+                    translator.readable()
+                    for translator in meta.translators
+                )
+            )
+            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:
@@ -143,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: