85 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
| 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)
 | |
| 
 |