from py.__.rest.transform import HTMLHandler, entitize from py.xml import html, raw class PageHandler(HTMLHandler): def startDocument(self): super(PageHandler, self).startDocument() self.head.append(html.link(type='text/css', rel='stylesheet', href='style.css')) title = self.title[0] breadcrumb = ''.join([unicode(el) for el in self.breadcrumb(title)]) self.body.append(html.div(raw(breadcrumb), class_='breadcrumb')) def handleLink(self, text, target): self.tagstack[-1].append(html.a(text, href=target, target='content')) def breadcrumb(self, title): if title != 'index': type, path = title.split('_', 1) path = path.split('.') module = None cls = None func = None meth = None if type == 'module': module = '.'.join(path) elif type == 'class': module = '.'.join(path[:-1]) cls = path[-1] elif type == 'method': module = '.'.join(path[:-2]) cls = path[-2] meth = path[-1] else: module = '.'.join(path[:-1]) func = path[-1] if module: yield html.a(module, href='module_%s.html' % (module,)) if type != 'module': yield u'.' if cls: s = cls if module: s = '%s.%s' % (module, cls) yield html.a(cls, href='class_%s.html' % (s,)) if type != 'class': yield u'.' if meth: s = '%s.%s' % (cls, meth) if module: s = '%s.%s.%s' % (module, cls, meth) yield html.a(meth, href='method_%s.html' % (s,)) if func: s = func if module: s = '%s.%s' % (module, func) yield html.a(func, href='function_%s.html' % (s,)) class IndexHandler(PageHandler): ignore_text = False def startDocument(self): super(IndexHandler, self).startDocument() self.head.append(html.script(type='text/javascript', src='apigen.js')) self._push(html.div(id='sidebar')) def endDocument(self): maindiv = html.div(id="main") maindiv.append(html.div(id="breadcrumb")) maindiv.append(html.iframe(name='content', id='content', src='module_py.html')) self.body.append(maindiv) def startTitle(self, depth): self.ignore_text = True def endTitle(self, depth): self.ignore_text = False def handleText(self, text): if self.ignore_text: return super(IndexHandler, self).handleText(text)