78707a9aa2d35cb5b6881a72bce9a0ed521b873c
[librarian.git] / librarian / fb2.py
1 # -*- coding: utf-8 -*-
2 #
3 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
5 #
6 import os.path
7 from copy import deepcopy
8 from lxml import etree
9
10 from librarian import functions, OutputFile
11 from .epub import replace_by_verse
12
13
14 functions.reg_substitute_entities()
15
16 def transform(wldoc, verbose=False,
17               cover=None, flags=None):
18     """ produces a FB2 file
19
20     cover: a cover.Cover object or True for default
21     flags: less-advertising, working-copy
22     """
23
24     document = deepcopy(wldoc)
25     del wldoc
26
27     if flags:
28         for flag in flags:
29             document.edoc.getroot().set(flag, 'yes')
30
31     style_filename = os.path.join(os.path.dirname(__file__), 'fb2/fb2.xslt')
32     style = etree.parse(style_filename)
33
34     replace_by_verse(document.edoc)
35
36     result = document.transform(style)
37
38     return OutputFile.from_string(unicode(result).encode('utf-8'))
39
40 # vim:et