diff options
Diffstat (limited to 'Lib/getopt.py')
| -rw-r--r-- | Lib/getopt.py | 47 | 
1 files changed, 47 insertions, 0 deletions
diff --git a/Lib/getopt.py b/Lib/getopt.py new file mode 100644 index 0000000000..ef72fbc0b2 --- /dev/null +++ b/Lib/getopt.py @@ -0,0 +1,47 @@ +# module getopt -- Standard command line processing. + +# Function getopt.getopt() has a different interface but provides the +# same functionality as the Unix getopt() function. + +# It has two arguments: the first should be argv[1:] (it doesn't want +# the script name), the second the string of option letters as passed +# to Unix getopt() (i.e., a string of allowable option letters, with +# options requiring an argument followed by a colon). + +# It raises the exception getopt.error with a string argument if it +# detects an error. + +# It returns two items: +# (1)	a list of pairs (option, option_argument) giving the options in +#	the order in which they were specified.  (I'd use a dictionary +#	but applications may depend on option order or multiple +#	occurrences.)  Boolean options have '' as option_argument. +# (2)	the list of remaining arguments (may be empty). + +error = 'getopt error' + +def getopt(args, options): +    list = [] +    while args and args[0][0] = '-' and args[0] <> '-': +    	if args[0] = '--': +    	    args = args[1:] +    	    break +    	optstring, args = args[0][1:], args[1:] +    	while optstring <> '': +    	    opt, optstring = optstring[0], optstring[1:] +    	    if classify(opt, options): # May raise exception as well +    	    	if optstring = '': +    	    	    if not args: +    	    	    	raise error, 'option -' + opt + ' requires argument' +    	    	    optstring, args = args[0], args[1:] +    	    	optarg, optstring = optstring, '' +    	    else: +    	    	optarg = '' +    	    list.append('-' + opt, optarg) +    return list, args + +def classify(opt, options): # Helper to check type of option +    for i in range(len(options)): +	if opt = options[i] <> ':': +	    return options[i+1:i+2] = ':' +    raise error, 'option -' + opt + ' not recognized'  | 
