Remove legacy code for txt.
authorRadek Czajka <rczajka@rczajka.pl>
Tue, 17 Sep 2024 12:17:16 +0000 (14:17 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Tue, 17 Sep 2024 12:17:16 +0000 (14:17 +0200)
MANIFEST.in
scripts/book2txt [deleted file]
setup.py
src/librarian/functions.py
src/librarian/parser.py
src/librarian/text.py [deleted file]
src/librarian/xslt/book2txt.xslt [deleted file]

index 40f0f90..cdd48f6 100644 (file)
@@ -4,7 +4,6 @@ include NOTICE
 include tox.ini
 recursive-include scripts *.py *.css
 recursive-include tests *.py *.xml *.html *.out *.txt *.jpeg
-include src/librarian/xslt/*.xslt
 include src/librarian/pdf/*
 include src/librarian/fb2/*
 include src/librarian/fonts/*
diff --git a/scripts/book2txt b/scripts/book2txt
deleted file mode 100755 (executable)
index 8b75f98..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python
-# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
-#
-from librarian.book2anything import Book2Anything, Option
-from librarian.parser import WLDocument
-
-
-class Book2Txt(Book2Anything):
-    format_name = "TXT"
-    ext = "txt"
-    uses_cover = False
-    uses_provider = False
-    parser_options = [
-        Option('-i', '--ignore-dublin-core', dest='parse_dublincore', 
-                action='store_false', default=True,
-                help='don\'t try to parse dublin core metadata')
-    ]
-    transform_options = [
-        Option('-w', '--wrap', action='store', type='int', dest='wrapping', default=0,
-                help='set line wrap column')
-    ]
-    transform_flags = [
-        Option('-r', '--raw', dest='raw-text', 
-                action='store_true', default=False,
-                help='Produce raw text, without any surrounding info.')
-    ]
-    transform = WLDocument.as_text
-
-
-if __name__ == '__main__':
-    Book2Txt.run()
index 2af0a05..afca003 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -51,7 +51,6 @@ setup(
         ]
     },
     scripts=[
-             'scripts/book2txt',
              'scripts/book2pdf',
              'scripts/book2fb2',
              'scripts/book2cover',
index bcaa784..cde6494 100644 (file)
@@ -64,32 +64,6 @@ def reg_ends_white():
     _register_function(ends_white)
 
 
-def reg_wrap_words():
-    def wrap_words(context, text, wrapping):
-        """
-        XPath extension function automatically wrapping words
-        in passed text.
-        """
-        if isinstance(text, list):
-            text = ''.join(text)
-        if not wrapping:
-            return text
-
-        words = re.split(r'\s', text)
-
-        line_length = 0
-        lines = [[]]
-        for word in words:
-            line_length += len(word) + 1
-            if line_length > wrapping:
-                # Max line length was exceeded. We create new line
-                lines.append([])
-                line_length = len(word)
-            lines[-1].append(word)
-        return '\n'.join(' '.join(line) for line in lines)
-    _register_function(wrap_words)
-
-
 def reg_person_name():
     def person_name(context, text):
         """ Converts "Name, Forename" to "Forename Name" """
index b4e4c5c..6e0a9c9 100644 (file)
@@ -222,14 +222,6 @@ class WLDocument:
 
     # Converters
 
-    def as_html(self, *args, **kwargs):
-        from librarian import html
-        return html.transform(self, *args, **kwargs)
-
-    def as_text(self, *args, **kwargs):
-        from librarian import text
-        return text.transform(self, *args, **kwargs)
-
     def as_pdf(self, *args, **kwargs):
         from librarian import pdf
         return pdf.transform(self, *args, **kwargs)
diff --git a/src/librarian/text.py b/src/librarian/text.py
deleted file mode 100644 (file)
index d3df5fe..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
-#
-import copy
-from librarian import functions, OutputFile, get_resource
-from lxml import etree
-import io
-import os
-
-
-functions.reg_substitute_entities()
-functions.reg_wrap_words()
-functions.reg_strip()
-functions.reg_person_name()
-
-
-with io.open(get_resource("res/text/template.txt")) as f:
-    TEMPLATE = f.read()
-
-
-def transform(wldoc, flags=None, **options):
-    """
-    Transforms input_file in XML to output_file in TXT.
-    possible flags: raw-text,
-    """
-    # Parse XSLT
-    style_filename = os.path.join(os.path.dirname(__file__),
-                                  'xslt/book2txt.xslt')
-    style = etree.parse(style_filename)
-
-    document = copy.deepcopy(wldoc)
-    del wldoc
-    document.swap_endlines()
-
-    if flags:
-        for flag in flags:
-            document.edoc.getroot().set(flag, 'yes')
-    if 'wrapping' in options:
-        options['wrapping'] = str(options['wrapping'])
-
-    result = document.transform(style, **options)
-
-    if not flags or 'raw-text' not in flags:
-        if document.book_info:
-            parsed_dc = document.book_info
-            description = parsed_dc.description
-            url = document.book_info.url
-
-            license_name = parsed_dc.license_description
-            license = parsed_dc.license
-            license_description = [
-                (
-                    "Wszystkie zasoby Wolnych Lektur możesz swobodnie wykorzystywać, "
-                    "publikować i rozpowszechniać pod warunkiem zachowania warunków "
-                    "licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur."
-                )
-            ]
-
-            if license:
-                license_description.append(
-                    "Ten utwór jest udostępniony na licencji %s: %s" % (
-                        license_name, license
-                    )
-                )
-            else:
-                license_description.append(
-                    "Ten utwór jest w domenie publicznej."
-                )
-            license_description.append(
-                "Wszystkie materiały dodatkowe (przypisy, motywy literackie) są "
-                "udostępnione na Licencji Wolnej Sztuki 1.3: "
-                "https://artlibre.org/licence/lal/pl/\n"
-                "Fundacja Wolne Lektury zastrzega sobie prawa do wydania "
-                "krytycznego zgodnie z art. Art.99(2) Ustawy o prawach autorskich "
-                "i prawach pokrewnych.\nWykorzystując zasoby z Wolnych Lektur, "
-                "należy pamiętać o zapisach licencji oraz zasadach, które "
-                "spisaliśmy w Zasadach wykorzystania Wolnych Lektur: "
-                "https://wolnelektury.pl/info/zasady-wykorzystania/\nZapoznaj "
-                "się z nimi, zanim udostępnisz dalej nasze książki."
-            )
-            license_description = "\n".join(license_description)
-
-            source = parsed_dc.source_name
-            if source:
-                source = "\n\nTekst opracowany na podstawie: " + source
-            else:
-                source = ''
-
-            contributors = ', '.join(
-                person.readable()
-                for person in sorted(set(
-                    p for p in (
-                        parsed_dc.technical_editors + parsed_dc.editors
-                    ) if p))
-            )
-            if contributors:
-                contributors = (
-                    "\n\nOpracowanie redakcyjne i przypisy: %s."
-                    % contributors
-                )
-            funders = ', '.join(parsed_dc.funders)
-            if funders:
-                funders = "\n\nPublikację wsparli i wsparły: %s." % funders
-            publisher = '\n\nWydawca: ' + ', '.join(parsed_dc.publisher)
-            isbn = getattr(parsed_dc, 'isbn_txt', None)
-            if isbn:
-                isbn = '\n\n' + isbn
-            else:
-                isbn = ''
-        else:
-            description = ("Publikacja zrealizowana w ramach projektu "
-                           "Wolne Lektury (http://wolnelektury.pl).")
-            url = '*' * 10
-            license_description = ""
-            source = ""
-            contributors = ""
-            funders = ""
-            publisher = ""
-            isbn = ""
-        result = (TEMPLATE % {
-            'description': description,
-            'url': url,
-            'license_description': license_description,
-            'text': str(result),
-            'source': source,
-            'contributors': contributors,
-            'funders': funders,
-            'publisher': publisher,
-            'isbn': isbn,
-        }).encode('utf-8')
-    else:
-        result = str(result).encode('utf-8')
-    return OutputFile.from_bytes(b"\r\n".join(result.splitlines()) + b"\r\n")
diff --git a/src/librarian/xslt/book2txt.xslt b/src/librarian/xslt/book2txt.xslt
deleted file mode 100644 (file)
index d43c7d4..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-   This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
-   Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
-
--->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:wl="http://wolnelektury.pl/functions"
-    xmlns:dc="http://purl.org/dc/elements/1.1/" >
-
-<xsl:output encoding="utf-8" method="text" />
-
-<xsl:param name="wrapping" select="0" />
-
-<!-- ============================================================================== -->
-<!-- = MASTER TAG                                                                 = -->
-<!-- = (can contain block tags, paragraph tags, standalone tags and special tags) = -->
-<!-- ============================================================================== -->
-<xsl:template match="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny">
-<xsl:if test="not (../@raw-text) and nazwa_utworu">
-    <xsl:apply-templates select="autor_utworu|dzielo_nadrzedne|nazwa_utworu|podtytul" mode="header" />
-    <xsl:call-template name="translators" />
-    <xsl:call-template name="isbn" />
-    <xsl:text>
-</xsl:text>
-</xsl:if>
-<xsl:apply-templates />
-<xsl:text>
-
-</xsl:text>
-</xsl:template>
-
-
-<!-- ==================================================================================== -->
-<!-- = BLOCK TAGS                                                                       = -->
-<!-- = (can contain other block tags, paragraph tags, standalone tags and special tags) = -->
-<!-- ==================================================================================== -->
-<xsl:template match="nota">
-<xsl:apply-templates />
-</xsl:template>
-
-<xsl:template match="ramka">
-<xsl:apply-templates />
-</xsl:template>
-
-<xsl:template match="lista_osob">
-<xsl:text>
-
-
-</xsl:text>
-<xsl:value-of select="naglowek_listy" />
-<xsl:apply-templates select="lista_osoba" />
-<xsl:text>
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="dedykacja">
-<xsl:text>
-
-</xsl:text>
-<xsl:apply-templates />
-</xsl:template>
-
-<xsl:template match="kwestia">
-<xsl:apply-templates select="strofa|akap|didaskalia" />
-</xsl:template>
-
-<xsl:template match="dlugi_cytat|poezja_cyt">
-<xsl:text>
-</xsl:text>
-<xsl:apply-templates />
-</xsl:template>
-
-<xsl:template match="motto">
-<xsl:text>
-
-
-
-</xsl:text>
-<xsl:apply-templates /><xsl:text>
-
-</xsl:text>
-</xsl:template>
-
-
-<!-- ========================================== -->
-<!-- = PARAGRAPH TAGS                         = -->
-<!-- = (can contain inline and special tags)  = -->
-<!-- ========================================== -->
-<!-- Title page -->
-<xsl:template match="autor_utworu" mode="header">
-<xsl:apply-templates mode="inline" />
-<xsl:text>
-
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="nazwa_utworu" mode="header">
-<xsl:apply-templates mode="inline" />
-<xsl:text>
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="dzielo_nadrzedne" mode="header">
-<xsl:apply-templates mode="inline" />
-<xsl:text>
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="podtytul" mode="header">
-<xsl:apply-templates mode="inline" />
-<xsl:text>
-</xsl:text>
-</xsl:template>
-
-<!-- Section headers (included in index)-->
-<xsl:template match="naglowek_akt|naglowek_czesc|srodtytul">
-<xsl:text>
-
-
-
-
-</xsl:text>
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-<xsl:template match="naglowek_scena|naglowek_rozdzial">
-<xsl:text>
-
-
-
-</xsl:text>
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-<xsl:template match="naglowek_osoba|naglowek_podrozdzial">
-<xsl:text>
-
-
-</xsl:text>
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-
-<xsl:template match="podtytul_czesc|podtytul_rozdzial|podtytul_podrozdzial|podtytul_akt|podtytul_scena">
-<xsl:text>
-
-</xsl:text>
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-
-
-<!-- Other paragraph tags -->
-<xsl:template match="miejsce_czas">
-<xsl:text>
-
-
-
-</xsl:text>
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-<xsl:template match="didaskalia">
-<xsl:variable name="content">
-    <xsl:apply-templates select="*|text()" mode="inline" />
-</xsl:variable>
-<xsl:text>
-
-/ </xsl:text><xsl:value-of select="wl:wrap_words(wl:strip($content), $wrapping)" /><xsl:text> /</xsl:text>
-</xsl:template>
-
-<xsl:template match="lista_osoba">
-<xsl:text>
- * </xsl:text>
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-<xsl:template match="akap|akap_dialog|akap_cd">
-<xsl:variable name="content">
-    <xsl:apply-templates select="*|text()" mode="inline" />
-</xsl:variable>
-<xsl:text>
-
-</xsl:text>
-<xsl:value-of select="wl:wrap_words(wl:strip($content), $wrapping)" />
-</xsl:template>
-
-<xsl:template match="strofa">
-<xsl:text>
-</xsl:text>
-    <xsl:choose>
-        <xsl:when test="count(br) > 0">
-            <xsl:call-template name="verse">
-                <xsl:with-param name="verse-content" select="br[1]/preceding-sibling::text() | br[1]/preceding-sibling::node()" />
-                <xsl:with-param name="verse-type" select="br[1]/preceding-sibling::*[name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd' or name() = 'wers_do_prawej'][1]" />
-            </xsl:call-template>
-            <xsl:for-each select="br">         
-                       <!-- Each BR tag "consumes" text after it -->
-                <xsl:variable name="lnum" select="count(preceding-sibling::br)" />
-                <xsl:call-template name="verse">
-                    <xsl:with-param name="verse-content"
-                        select="following-sibling::text()[count(preceding-sibling::br) = $lnum+1] | following-sibling::node()[count(preceding-sibling::br) = $lnum+1]" />
-                    <xsl:with-param name="verse-type" select="following-sibling::*[count(preceding-sibling::br) = $lnum+1 and (name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd' or name() = 'wers_do_prawej')][1]" />
-                </xsl:call-template>
-            </xsl:for-each>
-        </xsl:when>
-        <xsl:otherwise>
-            <xsl:call-template name="verse">
-                <xsl:with-param name="verse-content" select="text() | node()" />
-                <xsl:with-param name="verse-type" select="wers_wciety|wers_akap|wers_cd|wers_do_prawej[1]" />
-             </xsl:call-template>
-        </xsl:otherwise>
-    </xsl:choose>
-</xsl:template>
-
-<xsl:template name="verse">
-    <xsl:param name="verse-content" />
-    <xsl:param name="verse-type" />
-<xsl:text>
-</xsl:text>
-    <xsl:variable name="content">
-        <xsl:apply-templates select="$verse-content" mode="inline" />
-    </xsl:variable>
-    <xsl:choose>
-        <xsl:when test="name($verse-type) = 'wers_akap'">
-            <xsl:text>  </xsl:text>
-        </xsl:when>
-        <xsl:when test="name($verse-type) = 'wers_wciety'">
-            <xsl:choose>
-                <xsl:when test="$verse-content/@typ">
-                    <xsl:text>    </xsl:text>
-                </xsl:when>
-                <xsl:otherwise>
-                    <xsl:text>  </xsl:text>
-                </xsl:otherwise>
-            </xsl:choose>
-        </xsl:when>
-        <xsl:when test="name($verse-type) = 'wers_cd'">
-            <xsl:text>                        </xsl:text>
-        </xsl:when>
-        <xsl:when test="name($verse-type) = 'wers_do_prawej'">
-            <xsl:text>                        </xsl:text>
-        </xsl:when>
-    </xsl:choose>
-<xsl:value-of select="wl:strip($content)" />
-</xsl:template>
-
-<xsl:template match="motto_podpis">
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-<xsl:template match="tabela|tabelka">
-       <xsl:text>
-
-</xsl:text>
-<xsl:apply-templates/>
-<xsl:text>
-</xsl:text>
-</xsl:template>
-<xsl:template match="wiersz">
-       <xsl:apply-templates />
-       <xsl:text>
-</xsl:text>
-</xsl:template>
-<xsl:template match="kol">
-       <xsl:apply-templates mode="inline" />
-       <xsl:text>    </xsl:text>
-</xsl:template>
-
-
-<!-- ================================================ -->
-<!-- = INLINE TAGS                                  = -->
-<!-- = (contain other inline tags and special tags) = -->
-<!-- ================================================ -->
-<!-- Annotations -->
-<xsl:template match="pa|pe|pr|pt" mode="inline" />
-
-<!-- Other inline tags -->
-<xsl:template match="mat" mode="inline"><xsl:apply-templates mode="inline" /></xsl:template>
-
-<xsl:template match="didask_tekst" mode="inline"><xsl:apply-templates mode="inline" /></xsl:template>
-
-<xsl:template match="slowo_obce" mode="inline"><xsl:apply-templates mode="inline" /></xsl:template>
-
-<xsl:template match="tytul_dziela" mode="inline">
-<xsl:if test="@typ = '1'">„</xsl:if><xsl:apply-templates mode="inline" /><xsl:if test="@typ = '1'">”</xsl:if>
-</xsl:template>
-
-<xsl:template match="wyroznienie" mode="inline">
-<xsl:text>*</xsl:text><xsl:apply-templates mode="inline" /><xsl:text>*</xsl:text>
-</xsl:template>
-
-<xsl:template match="indeks_dolny" mode="inline">
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-<xsl:template match="wieksze_odstepy" mode="inline">
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-<xsl:template match="osoba" mode="inline">
-<xsl:apply-templates mode="inline" />
-</xsl:template>
-
-
-<!-- ============================================== -->
-<!-- = STANDALONE TAGS                            = -->
-<!-- = (cannot contain any other tags)            = -->
-<!-- ============================================== -->
-<xsl:template match="sekcja_swiatlo">
-<xsl:text>
-
-
-
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="sekcja_asterysk">
-<xsl:text>
-
-*
-
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="separator_linia">
-<xsl:text>
-
-------------------------------------------------
-
-</xsl:text>
-</xsl:template>
-
-
-<!-- ================ -->
-<!-- = SPECIAL TAGS = -->
-<!-- ================ -->
-<!-- Themes -->
-<xsl:template match="begin" mode="inline" />
-
-<xsl:template match="end" mode="inline" />
-
-<xsl:template match="begin|end" />
-
-<xsl:template match="motyw" mode="inline" />
-
-<xsl:template name="translators">
-    <xsl:if test="//dc:contributor.translator">
-        <text>tłum. </text>
-        <xsl:for-each select="//dc:contributor.translator/text()">
-            <xsl:if test="position() != 1">
-                <xsl:text>, </xsl:text>
-            </xsl:if>
-            <xsl:value-of select="wl:person_name(.)" />
-        </xsl:for-each>
-        <xsl:text>
-</xsl:text>
-    </xsl:if>
-</xsl:template>
-
-<xsl:template name="isbn">
-    <xsl:if test="//meta[@id='txt-id']">
-        <xsl:variable name="isbn" select="//meta[@id='txt-id']"/>
-        <text>
-ISBN </text><xsl:value-of select="substring-after($isbn, 'ISBN-')"/>
-    </xsl:if>
-</xsl:template>
-
-
-<!-- ================ -->
-<!-- = IGNORED TAGS = -->
-<!-- ================ -->
-<xsl:template match="extra|uwaga" />
-<xsl:template match="extra|uwaga" mode="inline" />
-
-<xsl:template match="nota_red" />
-<xsl:template match="abstrakt" />
-
-<!-- ======== -->
-<!-- = TEXT = -->
-<!-- ======== -->
-<xsl:template match="text()" />
-<xsl:template match="text()" mode="inline">
-    <xsl:value-of select="wl:substitute_entities(.)" />
-</xsl:template>
-
-
-</xsl:stylesheet>
-