1 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
2 # Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
5 from librarian import OutputFile, get_resource
8 with io.open(get_resource("res/text/template.txt")) as f:
15 self.current_margin = 0
16 self.starting_block = True
18 def push_margin(self, margin):
21 self.pieces[-1] = self.pieces[-1].rstrip(' ')
22 if margin > self.current_margin:
23 self.pieces.append('\r\n' * (margin - self.current_margin))
24 self.current_margin = margin
25 self.starting_block = True
27 def push_text(self, text, prepared=False):
29 if self.starting_block and not prepared:
31 self.pieces.append(text)
32 self.current_margin = 0
34 self.starting_block = False
40 build_method_fn = 'txt_build'
41 file_extension = "txt"
43 after_child_fn = 'txt_after_child'
47 normalize_whitespace = True
49 default_license_description = {
51 "Wszystkie zasoby Wolnych Lektur możesz swobodnie wykorzystywać, "
52 "publikować i rozpowszechniać pod warunkiem zachowania warunków "
53 "licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur.\n"
54 "Ten utwór jest w domenie publicznej.\n"
55 "Wszystkie materiały dodatkowe (przypisy, motywy literackie) są "
56 "udostępnione na Licencji Wolnej Sztuki 1.3: "
57 "https://artlibre.org/licence/lal/pl/\n"
58 "Fundacja Wolne Lektury zastrzega sobie prawa do wydania "
59 "krytycznego zgodnie z art. Art.99(2) Ustawy o prawach autorskich "
60 "i prawach pokrewnych.\nWykorzystując zasoby z Wolnych Lektur, "
61 "należy pamiętać o zapisach licencji oraz zasadach, które "
62 "spisaliśmy w Zasadach wykorzystania Wolnych Lektur: "
63 "https://wolnelektury.pl/info/zasady-wykorzystania/\nZapoznaj "
64 "się z nimi, zanim udostępnisz dalej nasze książki."
67 license_description = {
69 #"Ten utwór jest udostępniony na licencji {meta.license_description}: \n{meta.license}",
70 "Wszystkie zasoby Wolnych Lektur możesz swobodnie wykorzystywać, "
71 "publikować i rozpowszechniać pod warunkiem zachowania warunków "
72 "licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur.\n"
73 "Ten utwór jest jest udostępniony na licencji {meta.license_description} ({meta.license}). "
74 "Wszystkie materiały dodatkowe (przypisy, motywy literackie) są "
75 "udostępnione na Licencji Wolnej Sztuki 1.3: "
76 "https://artlibre.org/licence/lal/pl/\n"
77 "Fundacja Wolne Lektury zastrzega sobie prawa do wydania "
78 "krytycznego zgodnie z art. Art.99(2) Ustawy o prawach autorskich "
79 "i prawach pokrewnych.\nWykorzystując zasoby z Wolnych Lektur, "
80 "należy pamiętać o zapisach licencji oraz zasadach, które "
81 "spisaliśmy w Zasadach wykorzystania Wolnych Lektur: "
82 "https://wolnelektury.pl/info/zasady-wykorzystania/\nZapoznaj "
83 "się z nimi, zanim udostępnisz dalej nasze książki."
87 def __init__(self, base_url=None):
90 'header': TxtFragment()
92 self.current_fragments = [self.fragments[None]]
94 def enter_fragment(self, fragment):
95 self.current_fragments.append(self.fragments[fragment])
97 def exit_fragment(self):
98 self.current_fragments.pop()
100 def push_text(self, text, prepared=False):
101 self.current_fragments[-1].push_text(text, prepared=prepared)
103 def push_margin(self, margin):
104 self.current_fragments[-1].push_margin(margin)
106 def build(self, document, raw_text=False, **kwargs):
107 document.tree.getroot().txt_build(self)
110 self.enter_fragment('header')
112 self.push_text("tłum. ")
115 translator.readable()
116 for translator in meta.translators
124 if isbn.startswith(('ISBN-' , 'ISBN ')):
126 self.push_text('ISBN {isbn}'.format(isbn=isbn))
127 #builder.push_margin(5)
132 text = ''.join(self.fragments[None].pieces).lstrip()
137 text = ''.join(self.fragments['header'].pieces) + text
140 license_description = self.license_description['pol'].format(meta=meta)
142 license_description = self.default_license_description['pol']
145 source = "\n\nTekst opracowany na podstawie: " + meta.source_name
149 contributors = ', '.join(
151 for person in sorted(set(
153 meta.technical_editors + meta.editors
158 "\n\nOpracowanie redakcyjne i przypisy: %s."
162 funders = ', '.join(meta.funders)
164 funders = "\n\nPublikację wsparli i wsparły: %s." % funders
166 isbn = getattr(meta, 'isbn_txt', None)
172 result = TEMPLATE % {
174 "description": meta.description,
176 "license_description": license_description,
178 "contributors": contributors,
180 "publisher": '\n\nWydawca: ' + ', '.join(meta.publisher),
184 result = '\r\n'.join(result.splitlines()) + '\r\n'
185 return OutputFile.from_bytes(result.encode('utf-8'))