X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/ca8319931f449468918067367133ff25f9b19f30..82c0860d1520489be56457829d49eb17f165b9cd:/src/librarian/functions.py?ds=sidebyside diff --git a/src/librarian/functions.py b/src/librarian/functions.py index 15e931c..cde6494 100644 --- a/src/librarian/functions.py +++ b/src/librarian/functions.py @@ -1,12 +1,9 @@ -# -*- coding: utf-8 -*- -# # This file is part of Librarian, licensed under GNU Affero GPLv3 or later. -# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# Copyright © Fundacja Wolne Lektury. See NOTICE for more information. # -from __future__ import unicode_literals - from lxml import etree import re +from ebooklib import epub from librarian.dcparser import Person from librarian import get_resource @@ -20,11 +17,11 @@ def _register_function(f): def reg_substitute_entities(): entity_substitutions = [ - (u'---', u'—'), - (u'--', u'–'), - (u'...', u'…'), - (u',,', u'„'), - (u'"', u'”'), + ('---', '—'), + ('--', '–'), + ('...', '…'), + (',,', '„'), + ('"', '”'), ] def substitute_entities(context, text): @@ -67,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" """ @@ -130,7 +101,7 @@ def mathml_latex(context, trees): from librarian.embeds.mathml import MathML text = MathML(trees[0]).to_latex().data # Remove invisible multiplications, they produce unwanted spaces. - text = text.replace(u'\u2062', '') + text = text.replace('\u2062', '') return text @@ -138,14 +109,22 @@ def reg_mathml_latex(): _register_function(mathml_latex) -def reg_mathml_epub(zipf): +def reg_mathml_epub(output): from librarian.embeds.mathml import MathML def mathml(context, trees): data = MathML(trees[0]).to_latex().to_png().data name = "math%d.png" % mathml.count mathml.count += 1 - zipf.writestr('OPS/' + name, data) + output.add_item( + epub.EpubItem( + uid='math%d' % mathml.count, + file_name=name, + media_type='image/png', + content=data + ) + ) + return name mathml.count = 0 _register_function(mathml)