X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/fefdce4e24f9e397df5538fe6e7f54b5ece4d841..753d3a2d605279607ab18018a227b17dd7cb94b3:/src/librarian/functions.py diff --git a/src/librarian/functions.py b/src/librarian/functions.py index e5a47d6..2899808 100644 --- a/src/librarian/functions.py +++ b/src/librarian/functions.py @@ -7,6 +7,7 @@ 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 @@ -69,7 +70,10 @@ def reg_ends_white(): def reg_wrap_words(): def wrap_words(context, text, wrapping): - """XPath extension function automatically wrapping words in passed text""" + """ + XPath extension function automatically wrapping words + in passed text. + """ if isinstance(text, list): text = ''.join(text) if not wrapping: @@ -108,21 +112,19 @@ 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): @@ -137,14 +139,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)