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 vid = self._doc.collect_videos()
50 form= self._doc.collect_forms()
51 self._resources = doc + img + vid + form
53 def render(self, transform):
54 self._rendered_article = self._doc.xslt(transform['xhtml5'])
56 def template(self,sitemap,style,tdir,subdir):
57 htmlmenu = sitemap.gen_menu(self._lang,None,"menu")
58 levelmenu = sitemap.gen_menu(self._lang,self,"tree")
59 langmenu = sitemap.lang_menu(self._lang,self._link)
60 article = self._rendered_article
61 templateLoader = jinja2.FileSystemLoader( searchpath="/" )
62 templateEnv = jinja2.Environment( loader=templateLoader )
64 templateVars = {'title':self._title,
67 'levelmenu':levelmenu,
71 s = unicode(style, "utf-8")
72 t = s+'index.'+self._lang+'.xhtml.tmpl'
73 template = templateEnv.get_template( t )
74 templateout = template.render( templateVars )
76 outfile = tdir+'xhtml'.join(self._file.rsplit('xml',1))
77 mkdir_p(os.path.dirname(outfile))
78 out = codecs.open(outfile, 'w', 'utf-8')
79 out.write(templateout)