From 877639d2f061295739bd15615c3f69d69c758d8e Mon Sep 17 00:00:00 2001
From: Radek Czajka
Date: Tue, 17 Dec 2024 14:05:59 +0100
Subject: [PATCH] letters
---
setup.py | 2 +-
src/librarian/elements/__init__.py | 9 ++-
src/librarian/elements/letter/__init__.py | 76 +++++++++++++++++++++++
src/librarian/parser.py | 2 +-
src/librarian/pdf/wl.cls | 26 ++++++++
src/librarian/pdf/wl2tex.xslt | 2 +-
src/librarian/res/epub/style.css | 9 +++
src/librarian/xslt/book2html.xslt | 39 ++++++++++++
src/librarian/xslt/book2txt.xslt | 48 ++++++++++++++
9 files changed, 209 insertions(+), 4 deletions(-)
create mode 100644 src/librarian/elements/letter/__init__.py
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--
2.20.1