10 from lxml.builder import ElementMaker
11 #from jinja2 import Template
14 import treecutter.constants as const
15 from treecutter.docbook import Docbook
16 from treecutter.tools import mkdir_p
19 """Class representing a version of a webpage"""
20 def __init__(self,link,page):
28 self._rendered_article = None
34 return set(self._resources)
39 def set_article(self,art):
40 self._rendered_article = art
43 self._doc = Docbook(self._file)
44 (self._title, self._menu) = self._doc.title()
45 self._doc.expand_imageobjects()
46 self._doc.parse_xincludes()
47 doc = self._doc.collect_links()
48 img = self._doc.collect_images()
49 form= self._doc.collect_forms()
50 self._resources = doc + img + form
52 def render(self, transform):
53 self._rendered_article = self._doc.xslt(transform['xhtml5'])
55 def template(self,sitemap,style,tdir,subdir):
56 htmlmenu = sitemap.gen_menu(self._lang,None,"menu")
57 levelmenu = sitemap.gen_menu(self._lang,self,"tree")
58 langmenu = sitemap.lang_menu(self._lang,self._link)
59 article = self._rendered_article
60 templateLoader = jinja2.FileSystemLoader( searchpath="/" )
61 templateEnv = jinja2.Environment( loader=templateLoader )
63 templateVars = {'title':self._title,
66 'levelmenu':levelmenu,
70 s = unicode(style, "utf-8")
71 t = s+'index.'+self._lang+'.xhtml.tmpl'
72 template = templateEnv.get_template( t )
73 templateout = template.render( templateVars )
75 outfile = tdir+'xhtml'.join(self._file.rsplit('xml',1))
76 mkdir_p(os.path.dirname(outfile))
77 out = codecs.open(outfile, 'w', 'utf-8')
78 out.write(templateout)