mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.3 KiB
61 lines
2.3 KiB
__author__ = 'Chris'
|
|
|
|
"""
|
|
Preps the extracted Python code so that it can be evaled by the
|
|
monkey_parser
|
|
"""
|
|
|
|
from itertools import *
|
|
|
|
source = '''
|
|
import sys
|
|
import os
|
|
import doctest
|
|
import cProfile
|
|
import pstats
|
|
from argparse import ArgumentParser
|
|
from argparse import RawDescriptionHelpFormatter
|
|
from gooey import Gooey
|
|
parser = ArgumentParser(description='Example Argparse Program', formatter_class=RawDescriptionHelpFormatter)
|
|
parser.add_argument('filename', help='filename')
|
|
parser.add_argument('-r', '--recursive', dest='recurse', action='store_true', help='recurse into subfolders [default: %(default)s]')
|
|
parser.add_argument('-v', '--verbose', dest='verbose', action='count', help='set verbosity level [default: %(default)s]')
|
|
parser.add_argument('-i', '--include', action='append', help='only include paths matching this regex pattern. Note: exclude is given preference over include. [default: %(default)s]', metavar='RE')
|
|
parser.add_argument('-m', '--mycoolargument', help='mycoolargument')
|
|
parser.add_argument('-e', '--exclude', dest='exclude', help='exclude paths matching this regex pattern. [default: %(default)s]', metavar='RE')
|
|
parser.add_argument('-V', '--version', action='version')
|
|
parser.add_argument('-T', '--tester', choices=['yes', 'no'])
|
|
parser.add_argument(dest='paths', help='paths to folder(s) with source file(s) [default: %(default)s]', metavar='path', nargs='+')
|
|
'''
|
|
|
|
def take_imports(code):
|
|
return takewhile(lambda line: 'import' in line, code)
|
|
|
|
def drop_imports(code):
|
|
return dropwhile(lambda line: 'import' in line, code)
|
|
|
|
def split_line(line):
|
|
# splits an assignment statement into varname and command strings
|
|
# in: "parser = ArgumentParser(description='Example Argparse Program')"
|
|
# out: "parser", "ArgumentParser(description='Example Argparse Program"
|
|
variable, instruction = line.split('=', 1)
|
|
return variable.strip(), instruction.strip()
|
|
|
|
def update_parser_varname(new_varname, code):
|
|
# lines = source.split('\n')[1:]
|
|
lines = filter(lambda x: x != '', code)
|
|
|
|
argparse_code = dropwhile(lambda line: 'import' in line, lines)
|
|
old_argparser_varname, _ = split_line(argparse_code.next())
|
|
|
|
updated_code = [line.replace(old_argparser_varname, new_varname)
|
|
for line in lines]
|
|
return updated_code
|
|
|
|
if __name__ == '__main__':
|
|
pass
|
|
|
|
|
|
|
|
|
|
|