46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
 | 
						|
""" web server for displaying source
 | 
						|
"""
 | 
						|
 | 
						|
import py
 | 
						|
from pypy.translator.js.examples import server
 | 
						|
from py.__.apigen.source.browser import parse_path
 | 
						|
from py.__.apigen.source.html import create_html, create_dir_html, create_unknown_html
 | 
						|
from py.xml import html
 | 
						|
 | 
						|
class Handler(server.TestHandler):
 | 
						|
    BASE_URL='http://codespeak.net/svn/py/dist'
 | 
						|
 | 
						|
    def __getattr__(self, attr):
 | 
						|
        if attr == 'index':
 | 
						|
            attr = ''
 | 
						|
        url = self.BASE_URL + "/" + attr
 | 
						|
        if url.endswith('_py'):
 | 
						|
            url = url[:-3] + '.py'
 | 
						|
        path = py.path.svnurl(url)
 | 
						|
        if not path.check():
 | 
						|
            def f(rev=None):
 | 
						|
                return create_unknown_html(path)
 | 
						|
            f.exposed = True
 | 
						|
            f.func_name = attr
 | 
						|
            return f
 | 
						|
        def f(rev='HEAD'):
 | 
						|
            path = py.path.svnurl(url, rev)
 | 
						|
            # some try.. except.. here
 | 
						|
            if path.check(file=True):
 | 
						|
                return unicode(create_html(parse_path(path)))
 | 
						|
            elif path.check(dir=True):
 | 
						|
                return create_dir_html(path)
 | 
						|
            else:
 | 
						|
                return create_unknown_html(path)
 | 
						|
        f.exposed = True
 | 
						|
        f.func_name = attr
 | 
						|
        return f
 | 
						|
 | 
						|
def _main():
 | 
						|
    server.start_server(handler=Handler)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    _main()
 | 
						|
 |