From: Fredrik Unger Date: Mon, 21 Mar 2011 23:04:41 +0000 (+0100) Subject: Adding functionality to publish linked documents. link xlink:href and imagedata fileref. X-Git-Tag: v1.0~28 X-Git-Url: https://source.tree.se/git?p=treecutter.git;a=commitdiff_plain;h=2eecae69e2df36e19bdbbdf09c5f8a130606b9fe Adding functionality to publish linked documents. link xlink:href and imagedata fileref. --- 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: