X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/3a0c83394d5783715fab2be29fa1a9cfc3574e28..b7ab4f2e27b8fd7fb89f550ed60e6af39d350712:/src/librarian/pdf.py?ds=inline
diff --git a/src/librarian/pdf.py b/src/librarian/pdf.py
index 94d14cf..647b18f 100644
--- a/src/librarian/pdf.py
+++ b/src/librarian/pdf.py
@@ -188,6 +188,29 @@ def hack_motifs(doc):
                 break
 
 
+def add_fundraising(doc, fundraising):
+    # Before each naglowek_rozdzial and naglowek_scena and in the end
+    spots = []
+    for naglowek in doc.xpath('//naglowek_czesc|//naglowek_akt'):
+        spot = etree.Element('f_spot')
+        naglowek.addprevious(spot)
+        spots.append(spot)
+    spot = etree.Element('f_spot')
+    doc.getroot()[-1].append(spot)
+    spots.append(spot)
+    e = len(spots)
+    nfunds = len(fundraising)
+    if e > 4 * nfunds:
+        nfunds *= 2
+    for f in range(nfunds):
+        spot_index = int(f / nfunds * e)
+        spots[spot_index].set('active', 'true')
+        elem = etree.fromstring('' + fundraising[f % len(fundraising)] + '')
+        spots[spot_index].text = elem.text
+        for c in elem:
+            spots[spot_index].append(c)
+
+
 def parse_creator(doc):
     """Generates readable versions of creator and translator tags.
 
@@ -242,7 +265,7 @@ def package_available(package, args='', verbose=False):
 
 def transform(wldoc, verbose=False, save_tex=None, morefloats=None,
               cover=None, flags=None, customizations=None, base_url='file://./',
-              latex_dir=False):
+              latex_dir=False, fundraising=None):
     """ produces a PDF file with XeLaTeX
 
     wldoc: a WLDocument
@@ -305,6 +328,8 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None,
             root.set('thanks', document.book_info.thanks)
 
         # hack the tree
+        if fundraising:
+            add_fundraising(document.edoc, fundraising)
         move_motifs_inside(document.edoc)
         hack_motifs(document.edoc)
         parse_creator(document.edoc)
@@ -438,6 +463,8 @@ def load_including_children(wldoc=None, provider=None, uri=None):
     text = re.sub(r"([\u0400-\u04ff]+)", r"\1", text)
     # Geometric shapes.
     text = re.sub(r"([\u25a0-\u25ff]+)", r"\1", text)
+    # Hebrew
+    text = re.sub(r"([\u0590-\u05ff]+)", r"\1", text)
 
     document = WLDocument.from_bytes(text.encode('utf-8'),
                                      parse_dublincore=True, provider=provider)