-# -*- 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
def reg_substitute_entities():
entity_substitutions = [
- (u'---', u'—'),
- (u'--', u'–'),
- (u'...', u'…'),
- (u',,', u'„'),
- (u'"', u'”'),
+ ('---', '—'),
+ ('--', '–'),
+ ('...', '…'),
+ (',,', '„'),
+ ('"', '”'),
]
def substitute_entities(context, text):
_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" """
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
_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)