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)
 | 
						|
 |