• OpenPlans SVN

  • opencore r18824 - trac/plugin_skel/trac_plugin_skel

    from k0s on Jul 02, 2008 05:47 PM
    Author: jhammel
    Date: 2008-07-02 17:47:32 -0400 (Wed, 02 Jul 2008)
    New Revision: 18824
    
    Added:
       trac/plugin_skel/trac_plugin_skel/interfaces.py
    Log:
    ADDED: module to print out information about trac interfaces.  not used yet
    
    Added: trac/plugin_skel/trac_plugin_skel/interfaces.py
    ===================================================================
    --- trac/plugin_skel/trac_plugin_skel/interfaces.py	                        (rev 0)
    +++ trac/plugin_skel/trac_plugin_skel/interfaces.py	2008-07-02 21:47:32 UTC (rev 18824)
    @@ -0,0 +1,54 @@
    +import inspect
    +from trac.core import *
    +
    +# interfaces live in these modules
    +import trac.admin
    +import trac.attachment
    +import trac.db
    +import trac.env
    +import trac.mimeview
    +import trac.perm
    +import trac.prefs
    +import trac.resource
    +import trac.search
    +import trac.ticket
    +import trac.timeline
    +import trac.versioncontrol
    +import trac.versioncontrol.web_ui
    +import trac.web
    +import trac.web.chrome
    +import trac.wiki
    +
    +def interfaces():
    +    retval = Interface.__subclasses__()
    +    retval.sort(key=lambda x: x.__name__)
    +    return retval
    +
    +def print_interface(interface):    
    +    retval = [ '    ### methods for %s\n' % interface.__name__ ]
    +    doc = interface.__doc__
    +    if doc:
    +        retval.append('    """%s"""\n' % doc)
    +
    +    args = lambda x: inspect.formatargspec(*inspect.getargspec(x))
    +
    +    for method_name in [ i for i in dir(interface) if not i.startswith('_') ]:
    +        method = getattr(interface, method_name)
    +        if not hasattr(method, '__call__'):
    +            continue
    +        argstring = args(method)[1:-1]
    +        if argstring:
    +            retval.append('    def %s(self, %s):' % (method_name, argstring))
    +        else:
    +            retval.append('    def %s(self):' % method_name)
    +        doc = method.__doc__
    +        if doc:
    +            retval.append('        """%s"""\n' % doc)
    +
    +    return '\n'.join(retval)
    +
    +if __name__ == '__main__':
    +    for i in interfaces():
    +        print i.__name__
    +        print print_interface(i)
    +