summaryrefslogtreecommitdiff
path: root/sandbox/aahz/OO/open_office.py
blob: 90e4c4393b69ca651a3fcffad9b72a3c97125ed9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import sys
import zipfile
from cStringIO import StringIO

from docutils import core, io

import OOdirectives
import OOtext
import OOwriter

pub = core.Publisher(writer=OOwriter.Writer())
pub.set_reader('standalone', None, 'restructuredtext')
settings = pub.get_settings()
pub.source = io.FileInput(settings, source_path=sys.argv[1])
pub.destination = io.StringOutput(settings)
content = pub.publish()

manifest_list = [
    ('content.xml', content),
    ('styles.xml', OOtext.styles)
    ]

manifest_entries = []
for docname, _ in manifest_list:
    manifest_entries.append(OOtext.manifest_format % docname)
manifest = OOtext.manifest % '\n '.join(manifest_entries)
manifest_list.append( ('META-INF/manifest.xml', manifest) )

zip = zipfile.ZipFile(sys.argv[2], "w")
for docname, contents in manifest_list:
    zinfo = zipfile.ZipInfo(docname)
    zip.writestr(zinfo, contents)
zip.close()