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