From 2eecae69e2df36e19bdbbdf09c5f8a130606b9fe Mon Sep 17 00:00:00 2001 From: Fredrik Unger Date: Tue, 22 Mar 2011 00:04:41 +0100 Subject: [PATCH] Adding functionality to publish linked documents. link xlink:href and imagedata fileref. --- src/tree-cutter.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/tree-cutter.py b/src/tree-cutter.py index 696c00a..37ee801 100755 --- a/src/tree-cutter.py +++ b/src/tree-cutter.py @@ -8,6 +8,7 @@ import tempfile import errno import time import argparse +import shutil from amara import bindery from amara.xslt import transform from Cheetah.Template import Template @@ -56,10 +57,13 @@ def generateSitemap(): xfile = os.path.join(dirname,filename) doc = bindery.parse(xfile, prefixes={u'db': u'http://docbook.org/ns/docbook', - u'xi': u'http://www.w3.org/2001/XInclude'}) + u'xi': u'http://www.w3.org/2001/XInclude', + u'xl': u'http://www.w3.org/1999/xlink'}) title = doc.xml_select(u'/db:article/db:info/db:title') menu = doc.xml_select(u'/db:article/db:info/db:titleabbrev') code = doc.xml_select(u"//xi:include[@parse='text']") + resource = doc.xml_select(u"//db:link[@xl:href]") + image = doc.xml_select(u"//db:imagedata[@fileref]") exe = 0 for c in code: (p, ext) = os.path.splitext(c.href) @@ -71,12 +75,22 @@ def generateSitemap(): base = xfile.split('.')[1] link = base.replace('index','') level = len(filter(None,re.split(r'(/\w*/)',link))) + res = [] + for r in resource: + rf = os.path.join(dirname,r.href) + if os.path.isfile(rf): + res.append(rf) + for i in image: + im = os.path.join(dirname,i.fileref) + if os.path.isfile(im): + res.append(im) page = dict(title=unicode(doc.article.info.title), menu=unicode(doc.article.info.titleabbrev), output=os.path.join(dirname, filename.replace('xml','html')), exe=exe, file=xfile, + res=res, level=level) for l in sitemap: if l['link'] == link: @@ -187,7 +201,9 @@ def writeToTemplate(page,doc,sitemap): out = open(outfile, 'w') out.write(str(template)) out.close() - + for r in page['res']: + mkdir_p(os.path.dirname(tmptarget+r)) + shutil.copyfile(r, tmptarget+r) sitemap = generateSitemap() tmptarget = tempfile.mkdtemp()+'/' for page in sitemap: -- 2.30.2