From: Fredrik Unger Date: Wed, 4 Apr 2012 12:10:09 +0000 (+0200) Subject: Adding initial plugin support for xincludes in documents X-Git-Url: https://source.tree.se/git?p=treecutter.git;a=commitdiff_plain;h=3d937ac1d66a17820d013004a5ed57a20c87bb20 Adding initial plugin support for xincludes in documents Using the pkg_resources to package xinclude scripts that can be generaly usable. Initial tests works and once more scripts are adapted they will be added. --- diff --git a/setup.py b/setup.py index 6bb0cdf..cb89efe 100644 --- a/setup.py +++ b/setup.py @@ -7,4 +7,5 @@ setup(name="treecutter", version='1', packages=['treecutter'], # python package names here scripts=['bin/treecutter'], # scripts here + package_data={'xinclude': ['xinclude/*.py']} ) diff --git a/treecutter/page.py b/treecutter/page.py index ce12960..9f27c91 100644 --- a/treecutter/page.py +++ b/treecutter/page.py @@ -5,6 +5,7 @@ import tempfile from amara import bindery from amara.xslt import transform from Cheetah.Template import Template +from pkg_resources import resource_filename, resource_listdir import treecutter.const as const from treecutter.tools import mkdir_p @@ -46,14 +47,25 @@ class Page(): (p, ext) = os.path.splitext(c.href) if ext in const.valid_scripts: exe = [] - exe.append(os.path.join(os.path.abspath(dirname)+'/'+c.href)) + script = os.path.join(os.path.abspath(dirname)+'/'+c.href) + if os.path.isfile(script): + exe.append(script) + else: + print resource_listdir('xinclude', '') + print resource_filename('xinclude', c.href) + if c.href in resource_listdir('xinclude', ''): + script = resource_filename('xinclude', c.href) + exe.append(script) + else: + print "Script "+c.href+" in "+self._file+" missing" if c.xml_select(u"//xi:include[@accept-language]"): alang = c.xml_attributes[None, "accept-language"] exe.append("lang="+alang) if c.xml_select(u"//xi:include[@xpointer]"): exe.append("xptr="+c.xpointer) xml = subprocess.Popen(exe,stdout=subprocess.PIPE) - xstr = bindery.parse(str(xml.stdout.read())) + xmlblock = str(xml.stdout.read()) + xstr = bindery.parse(xmlblock) idp = c.xml_index_on_parent for x in xstr.xml_children: c.xml_parent.xml_insert(idp,x)