5bd2bb5271e0bbab69a25816014a3bf0d322335d
[wolnelektury.git] / bin / book2html.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 import cStringIO
4 import re
5 import optparse
6 import os
7 import sys
8
9 from lxml import etree
10
11
12 # Parse args
13 usage = """Usage: %prog [options] SOURCE [SOURCE...]
14 Convert SOURCE files to HTML format."""
15
16 parser = optparse.OptionParser(usage=usage)
17
18 parser.add_option('-v', '--verbose', action='store_true', dest='verbose', default=False,
19     help='print status messages to stdout')
20
21 options, input_filenames = parser.parse_args()
22
23 if len(input_filenames) < 1:
24     parser.print_help()
25     exit(1)
26
27 # Parse XSLT
28 style = etree.parse('book2html.xslt')
29     
30 # Do some real work
31 for input_filename in input_filenames:
32     if options.verbose:
33         print input_filename
34     
35     output_filename = os.path.splitext(input_filename)[0] + '.html'
36     
37     # Transform
38     doc_file = cStringIO.StringIO()
39     expr = re.compile(r'/\s', re.MULTILINE | re.UNICODE);
40
41     f = open(input_filename, 'r')
42     for line in f:
43         line = line.decode('utf-8')
44         line = expr.sub(u'<br/>\n', line).replace(u'---', u'—').replace(u',,', u'„')
45         doc_file.write(line.encode('utf-8'))
46     f.close()
47
48     doc_file.seek(0);
49
50     parser = etree.XMLParser(remove_blank_text=True)
51     doc = etree.parse(doc_file, parser)
52
53     result = doc.xslt(style)
54     result.write(output_filename, xml_declaration=True, pretty_print=True, encoding='utf-8')
55