X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/716a9ab552bffbb7df2cb31ae41ee196902c7653..88f39c4f90a67164b2c3da7c7a41df420f3b17ab:/src/librarian/functions.py diff --git a/src/librarian/functions.py b/src/librarian/functions.py index 00f1f6e..bcaa784 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): @@ -111,28 +108,26 @@ def reg_texcommand(): _register_function(texcommand) -def reg_lang_code_3to2(): - def lang_code_3to2(context, text): - """Convert 3-letter language code to 2-letter code""" - result = '' - text = ''.join(text) - with open(get_resource('res/ISO-639-2_8859-1.txt'), 'rb') as f: - for line in f.read().decode('latin1').split('\n'): - list = line.strip().split('|') - if list[0] == text: - result = list[2] - if result == '': - return text - else: - return result - _register_function(lang_code_3to2) +def lang_code_3to2(text): + """Convert 3-letter language code to 2-letter code""" + result = '' + text = ''.join(text) + with open(get_resource('res/ISO-639-2_8859-1.txt'), 'rb') as f: + for line in f.read().decode('latin1').split('\n'): + codes = line.strip().split('|') + if codes[0] == text: + result = codes[2] + if result == '': + return text + else: + return result 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 @@ -140,14 +135,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)