5
from StringIO import StringIO
9
from docutils.core import publish_file
10
from docutils.parsers import rst
12
print "Missing dependency. Please install docutils."
15
from elementtree.ElementTree import XML
16
from elementtree import HTMLTreeBuilder
18
print "Missing dependency. Please install ElementTree."
23
print "Missing dependency. Please install Kid."
27
def kidified_rest(rest_file, template_name):
28
xhtml_file = StringIO()
29
# prevent docutils from autoclosing the StringIO
30
xhtml_file.close = lambda: None
31
xhtml = publish_file(rest_file, writer_name='html', destination=xhtml_file,
32
settings_overrides={"doctitle_xform": 0}
36
xml = HTMLTreeBuilder.parse(xhtml_file)
37
head = xml.find('head')
38
body = xml.find('body')
39
assert head is not None
40
assert body is not None
41
template=kid.Template(file=template_name,
43
return (template.serialize(output="html"))
46
def safe_open(filename, mode):
48
return open(filename, mode + 'b')
50
if e.errno != errno.ENOENT:
52
sys.stderr.write('file not found: %s\n' % sys.argv[2])
56
def main(template, source=None, target=None):
57
if source is not None:
58
rest_file = safe_open(source, 'r')
61
if target is not None:
62
out_file = safe_open(target, 'w')
65
out_file.write(kidified_rest(rest_file, template))
67
assert len(sys.argv) > 1
69
# Strip options so only the arguments are passed
70
args = [x for x in sys.argv[1:] if not x.startswith('-')]