From: Radek Czajka 
Date: Tue, 17 Dec 2024 13:05:59 +0000 (+0100)
Subject: letters
X-Git-Tag: 24.5.3
X-Git-Url: https://git.mdrn.pl/librarian.git/commitdiff_plain/refs/tags/24.5.3
letters
---
diff --git a/setup.py b/setup.py
index 750b124..418f7bc 100755
--- a/setup.py
+++ b/setup.py
@@ -22,7 +22,7 @@ def whole_tree(prefix, path):
 
 setup(
     name='librarian',
-    version='24.5.2',
+    version='24.5.3',
     description='Converter from WolneLektury.pl XML-based language to XHTML, TXT and other formats',
     author="Marek StÄpniowski",
     author_email='marek@stepniowski.com',
diff --git a/src/librarian/elements/__init__.py b/src/librarian/elements/__init__.py
index 9481190..34d3fac 100644
--- a/src/librarian/elements/__init__.py
+++ b/src/librarian/elements/__init__.py
@@ -4,7 +4,7 @@
 from lxml import etree
 from . import (blocks, comments, drama, figures, footnotes, front, headers,
                masters, paragraphs, poetry, ref, root, separators, styles, themes,
-               tools, base, bible)
+               tools, base, bible, letter)
 
 
 WL_ELEMENTS = {
@@ -133,6 +133,13 @@ WL_ELEMENTS = {
     "wywiad_odp": blocks.WywiadOdp,
 
     "werset": bible.Werset,
+
+    "list": letter.List,
+    "adresat": letter.Adresat,
+    "miejsce_data": letter.MiejsceData,
+    "naglowek_listu": letter.NaglowekListu,
+    "pozdrowienie": letter.Pozdrowienie,
+    "podpis": letter.Podpis,
     
     # Inline MathML, should really be namespaced.
     "mrow": etree.ElementBase,
diff --git a/src/librarian/elements/letter/__init__.py b/src/librarian/elements/letter/__init__.py
new file mode 100644
index 0000000..a062377
--- /dev/null
+++ b/src/librarian/elements/letter/__init__.py
@@ -0,0 +1,76 @@
+from ..base import WLElement
+
+
+class List(WLElement):
+    CAN_HAVE_TEXT = False
+
+    TXT_TOP_MARGIN = 3
+    TXT_BOTTOM_MARGIN = 2
+    TXT_LEGACY_TOP_MARGIN = 1
+    TXT_LEGACY_BOTTOM_MARGIN = 0
+
+    HTML_TAG = 'blockquote'
+
+    EPUB_TAG = 'div'
+    EPUB_CLASS = 'block'
+
+
+class Adresat(WLElement):
+    STRIP = True
+    SHOULD_HAVE_ID = True
+
+    TXT_TOP_MARGIN = 2
+    TXT_BOTTOM_MARGIN = 2
+    TXT_LEGACY_TOP_MARGIN = 2
+    TXT_LEGACY_BOTTOM_MARGIN = 0
+
+    EPUB_TAG = HTML_TAG = 'p'
+    EPUB_CLASS = HTML_CLASS = 'paragraph adresat'
+
+class MiejsceData(WLElement):
+    STRIP = True
+    SHOULD_HAVE_ID = True
+
+    TXT_TOP_MARGIN = 2
+    TXT_BOTTOM_MARGIN = 2
+    TXT_LEGACY_TOP_MARGIN = 2
+    TXT_LEGACY_BOTTOM_MARGIN = 0
+
+    EPUB_TAG = HTML_TAG = 'p'
+    EPUB_CLASS = HTML_CLASS = 'paragraph miejscedata'
+
+class NaglowekListu(WLElement):
+    STRIP = True
+    SHOULD_HAVE_ID = True
+
+    TXT_TOP_MARGIN = 2
+    TXT_BOTTOM_MARGIN = 2
+    TXT_LEGACY_TOP_MARGIN = 2
+    TXT_LEGACY_BOTTOM_MARGIN = 0
+
+    EPUB_TAG = HTML_TAG = 'p'
+    EPUB_CLASS = HTML_CLASS = 'paragraph nagloweklistu'
+
+class Pozdrowienie(WLElement):
+    STRIP = True
+    SHOULD_HAVE_ID = True
+
+    TXT_TOP_MARGIN = 2
+    TXT_BOTTOM_MARGIN = 2
+    TXT_LEGACY_TOP_MARGIN = 2
+    TXT_LEGACY_BOTTOM_MARGIN = 0
+
+    EPUB_TAG = HTML_TAG = 'p'
+    EPUB_CLASS = HTML_CLASS = 'paragraph pozdrowienie'
+
+class Podpis(WLElement):
+    STRIP = True
+    SHOULD_HAVE_ID = True
+
+    TXT_TOP_MARGIN = 2
+    TXT_BOTTOM_MARGIN = 2
+    TXT_LEGACY_TOP_MARGIN = 2
+    TXT_LEGACY_BOTTOM_MARGIN = 0
+
+    EPUB_TAG = HTML_TAG = 'p'
+    EPUB_CLASS = HTML_CLASS = 'paragraph podpis'
diff --git a/src/librarian/parser.py b/src/librarian/parser.py
index ca9691a..1f18dbd 100644
--- a/src/librarian/parser.py
+++ b/src/librarian/parser.py
@@ -209,7 +209,7 @@ class WLDocument:
         for s in self.edoc.findall('//slowo_obce'):
             if not s.text and len(s) == 1 and s[0].tag == 'slowo_obce':
                 continue
-            if re.match(r'^[\s\u0590-\u05ff]+$', s.text):
+            if re.match(r'^[\s\u0590-\u05ff]+$', s.text or ''):
                 s.attrib['protect'] = 'true'
 
     def editors(self):
diff --git a/src/librarian/pdf/wl.cls b/src/librarian/pdf/wl.cls
index 33efa78..a56629b 100644
--- a/src/librarian/pdf/wl.cls
+++ b/src/librarian/pdf/wl.cls
@@ -828,6 +828,32 @@ Letters={Uppercase}
 {\scshape \MakeLowercase{#1}}%
 }
 
+
+\newcommand{\list}[1]{%
+\begin{quotation}%
+#1%
+\end{quotation}%
+}
+  
+\newcommand{\adresat}[1]{%
+\par{\N#1}%
+}
+\newcommand{\miejscedata}[1]{%
+\par{\raggedright\N#1}%
+}
+\newcommand{\nagloweklistu}[1]{%
+\begin{center}%
+\par{\N#1}%
+\end{center}%
+}
+\newcommand{\pozdrowienie}[1]{%
+\par{\hspace{4em}\N#1}%
+}
+\newcommand{\podpis}[1]{%
+\par{\hspace{4em}\N#1}%
+}
+
+
 \newcommand{\sekcjaswiatlo}{%
 \vspace{30pt}%
 }
diff --git a/src/librarian/pdf/wl2tex.xslt b/src/librarian/pdf/wl2tex.xslt
index 547c61c..319f608 100644
--- a/src/librarian/pdf/wl2tex.xslt
+++ b/src/librarian/pdf/wl2tex.xslt
@@ -348,7 +348,7 @@
 
 
 
+    match="naglowek_osoba|naglowek_podrozdzial|podtytul_podrozdzial|miejsce_czas|didaskalia|lista_osoba|akap|akap_dialog|akap_cd|motto_podpis|naglowek_listy|srodtytul|podtytul_czesc|podtytul_rozdzial|podtytul_akt|podtytul_scena|werset|list|adresat|miejsce_data|naglowek_listu|pozdrowienie|podpis">
   
     
       
diff --git a/src/librarian/res/epub/style.css b/src/librarian/res/epub/style.css
index 8325c12..5ec46c5 100644
--- a/src/librarian/res/epub/style.css
+++ b/src/librarian/res/epub/style.css
@@ -227,6 +227,15 @@ div.didaskalia
     margin: 0;
     text-indent: 1.2em;
 }
+.paragraph.nagloweklistu {
+    text-align: center;
+    margin: .5em 0;
+    text-indent: 0;
+}
+.paragraph.miejscedata, .paragraph.pozdrowienie, .paragraph.podpis {
+    text-align: right;
+    text-indent: 0;
+}
 
 h1 + .paragraph, h2 + .paragraph
 {
diff --git a/src/librarian/xslt/book2html.xslt b/src/librarian/xslt/book2html.xslt
index c06e41a..b128b7e 100644
--- a/src/librarian/xslt/book2html.xslt
+++ b/src/librarian/xslt/book2html.xslt
@@ -358,6 +358,45 @@
     
 
 
+
+    
+
+
+  
+    
+    
+    
+  
+
+
+  
+    
+    
+    
+  
+
+
+  
+    
+    
+    
+  
+
+
+  
+    
+    
+    
+  
+
+
+  
+    
+    
+    
+  
+
+
 
     
 
diff --git a/src/librarian/xslt/book2txt.xslt b/src/librarian/xslt/book2txt.xslt
index 4bc919b..290a8aa 100644
--- a/src/librarian/xslt/book2txt.xslt
+++ b/src/librarian/xslt/book2txt.xslt
@@ -187,6 +187,54 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+  
+                
+  
+  
+
+
+
+  
+                
+  
+  
+
+
+
+  
+
+        
+  
+  
+
+
+
+  
+    
+  
+  
+
+
+
+  
+        
+  
+  
+
+
+