X-Git-Url: https://source.tree.se/git?p=treecutter.git;a=blobdiff_plain;f=treecutter%2Fdocbook.py;fp=treecutter%2Fdocbook.py;h=9e970c98b679b2d8b81146e99e0e3141fac02d65;hp=32cff722ed72211e414d265250a72ece77202da0;hb=86815abce0db2e449bc3b2cbc6790885f73d41d9;hpb=5ee26cbf373af8fe76d549f4f1cba1f240146a2b diff --git a/treecutter/docbook.py b/treecutter/docbook.py index 32cff72..9e970c9 100644 --- a/treecutter/docbook.py +++ b/treecutter/docbook.py @@ -2,6 +2,7 @@ import os import subprocess +import re from lxml import etree from lxml.builder import ElementMaker @@ -11,7 +12,7 @@ from time import time import treecutter.constants as const from treecutter.image import Image -from treecutter.tools import warning +#from treecutter.tools import warning class Docbook(): """Class representing a docbook document""" @@ -29,6 +30,31 @@ class Docbook(): ta = unicode(ta[0].text) return (t, ta) + def status(self): + status = self._doc.xpath(u'/db:article[@status]',namespaces=const.XPATH) + if status: + return unicode(status[0].get('status')) + return None + + def role(self): + art = self._doc.xpath(u'/db:article[@role]',namespaces=const.XPATH) + if art: + return unicode(art[0].get('role')) + return 'index' + + def userlevel(self): + lvl = self._doc.xpath(u'/db:article[@userlevel]',namespaces=const.XPATH) + if lvl: + lvlstr = unicode(lvl[0].get('userlevel')) + return { + 'Level 1': 1, + 'Level 2': 2, + 'Level 3': 3, + 'Level 4': 4, + 'Level 5': 5, + }.get(lvlstr, 0) + return 0 + def expand_imageobjects(self): cwd = os.getcwd() db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP) @@ -63,7 +89,7 @@ class Docbook(): if ext in const.valid_scripts: exe = [] script = os.path.join(os.path.abspath(self._dirname)+'/'+href) - if os.path.isfile(script): + if os.path.isfile(script) and os.access(script, os.X_OK): exe.append(script) else: if href in resource_listdir('xinclude', ''): @@ -75,6 +101,8 @@ class Docbook(): exe.append("lang="+alang) if xpointer: exe.append("xptr="+xpointer) + if exe == []: + continue print " executing %15s" % (href), ts = time() os.chdir(self._dirname) @@ -82,10 +110,10 @@ class Docbook(): stderr=subprocess.PIPE) (stdout, stderr) = xml.communicate() #print xml.returnvalue - if stderr: - warning("%s : %s" % (" ".join(exe),stderr)) - warning(stdout) - exit +# if stderr: +# warning("%s : %s" % (" ".join(exe),stderr)) +# warning(stdout) +# exit os.chdir(cwd) te = time() print " [%5.2f s] (%s)" % (round(te-ts,2),xpointer) @@ -95,6 +123,9 @@ class Docbook(): idp.insert(idp.index(c)+1,xstr) idp.remove(c) + def xinclude(self): + self._doc.xinclude() + def collect_links(self): res = [] for r in self._doc.xpath(u"//db:link[@xlink:href]",namespaces=const.XPATH):