#! /usr/bin/env python

"""Print names of all methods defined in module

This script demonstrates use of the visitor interface of the compiler
package.
"""

import compiler

class MethodFinder:
    """Print the names of all the methods

    Each visit method takes two arguments, the node and its current
    scope.  The scope is the name of the current class or None.
    """

    def visitClass(self, node, scope=None):
        self.visit(node.code, node.name)

    def visitFunction(self, node, scope=None):
        if scope is not None:
            print "%s.%s" % (scope, node.name)
        self.visit(node.code, None)

def main(files):
    mf = MethodFinder()
    for file in files:
        f = open(file)
        buf = f.read()
        f.close()
        ast = compiler.parse(buf)
        compiler.walk(ast, mf)

if __name__ == "__main__":
    import sys

    main(sys.argv[1:])
