~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/rst2prettyhtml.py

- avoid warning about log not being registered during startup

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python2.4
2
 
import errno
3
 
import os
4
 
from StringIO import StringIO
5
 
import sys
6
 
 
7
 
from docutils.core import publish_file
8
 
from docutils.parsers import rst
9
 
from elementtree.ElementTree import XML
10
 
from elementtree import HTMLTreeBuilder
11
 
import kid
12
 
 
13
 
def kidified_rest(rest_file, template_name):
14
 
    xhtml_file = StringIO()
15
 
    # prevent docutils from autoclosing the StringIO
16
 
    xhtml_file.close = lambda: None
17
 
    xhtml = publish_file(rest_file, writer_name='html', destination=xhtml_file,
18
 
                         settings_overrides={"doctitle_xform": 0} 
19
 
    
20
 
    )
21
 
    xhtml_file.seek(0)
22
 
    xml = HTMLTreeBuilder.parse(xhtml_file)
23
 
    head = xml.find('head')
24
 
    body = xml.find('body')
25
 
    assert head is not None
26
 
    assert body is not None
27
 
    template=kid.Template(file=template_name, 
28
 
                          head=head, body=body)
29
 
    return (template.serialize(output="html"))
30
 
 
31
 
def safe_open(filename, mode):
32
 
    try:
33
 
        return open(filename, mode + 'b')
34
 
    except IOError, e:
35
 
        if e.errno != errno.ENOENT:
36
 
            raise
37
 
        sys.stderr.write('file not found: %s\n' % sys.argv[2])
38
 
        sys.exit(3)
39
 
args = sys.argv[1:]
40
 
 
41
 
assert len(args) > 0
42
 
 
43
 
if len(args) > 1:
44
 
    rest_file = safe_open(args[1], 'r')
45
 
else:
46
 
    rest_file = sys.stdin
47
 
 
48
 
if len(args) > 2:
49
 
    out_file = safe_open(args[2], 'w')
50
 
else:
51
 
    out_file = sys.stdout
52
 
 
53
 
out_file.write(kidified_rest(rest_file, args[0]))