X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/0604bdd5f693da9f1c78f9d9fa2276f0c7b6c17b..82c0860d1520489be56457829d49eb17f165b9cd:/src/librarian/builders/txt.py diff --git a/src/librarian/builders/txt.py b/src/librarian/builders/txt.py index 4023814..69ddbe2 100644 --- a/src/librarian/builders/txt.py +++ b/src/librarian/builders/txt.py @@ -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: