diff --git a/pymule/__main__.py b/pymule/__main__.py index 4c1736805d2960f2ab21b992b56aa38cabafc3d2..4a266f299d2215d51cba595490a66241f45a4cc1 100644 --- a/pymule/__main__.py +++ b/pymule/__main__.py @@ -2,6 +2,7 @@ import argparse import createrun import manageruns import switcheroo +import ffilter if __name__ == '__main__': @@ -13,6 +14,7 @@ if __name__ == '__main__': manageruns.create_rm_parser(subparsers) manageruns.create_backup_parser(subparsers) switcheroo.create_parser(subparsers) + ffilter.create_parser(subparsers) parsed = parser.parse_args() parsed.func(parsed) diff --git a/pymule/ffilter.py b/pymule/ffilter.py new file mode 100644 index 0000000000000000000000000000000000000000..3577395ec3cc523fee0aae73eb3514d8879e484c --- /dev/null +++ b/pymule/ffilter.py @@ -0,0 +1,49 @@ +import argparse +import re +import sys + + +def create_parser(subparsers): + parser = subparsers.add_parser( + 'ffilter', + description='returns interfaces for functions' + ) + parser.add_argument( + 'src', nargs='?', + type=argparse.FileType('r'), + default=sys.stdin + ) + parser.add_argument( + '--name', nargs='?', + default=None + ) + parser.add_argument( + 'dest', nargs='?', + type=argparse.FileType('w'), + default=sys.stdout + ) + parser.set_defaults(func=main) + + +def main(parsed): + fname = parsed.src.name + if parsed.name: + name = parsed.name + else: + name = fname.split('.')[0] + + buf = parsed.src.read() + matches = re.findall( + "FUNCTION ([A-Z_]+2[A-Z\d_]+)(\([^\)\n]+\))\n(( *!!.*\n)+)", + buf, + re.I + ) + if len(matches) > 0: + parsed.dest.write(" !! From file %s\n" % fname) + parsed.dest.write('\n'.join( + ' use %s, only: %s!!%s\n%s' % ( + name, func.lower(), args, comments + ) + for func, args, comments, _ in matches + )) + parsed.dest.write("\n\n")