diff options
Diffstat (limited to 'Lib/getopt.py')
-rw-r--r-- | Lib/getopt.py | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/Lib/getopt.py b/Lib/getopt.py index 5d71b28..e93f7d1 100644 --- a/Lib/getopt.py +++ b/Lib/getopt.py @@ -21,11 +21,11 @@ # detects an error. # It returns two values: -# (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). +# (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). import string @@ -36,31 +36,31 @@ def getopt(args, shortopts, longopts = []): longopts = longopts[:] longopts.sort() while args and args[0][:1] == '-' and args[0] != '-': - if args[0] == '--': - args = args[1:] - break - if args[0][:2] == '--': - list, args = do_longs(list, args[0][2:], longopts, args[1:]) - else: - list, args = do_shorts(list, args[0][1:], shortopts, args[1:]) + if args[0] == '--': + args = args[1:] + break + if args[0][:2] == '--': + list, args = do_longs(list, args[0][2:], longopts, args[1:]) + else: + list, args = do_shorts(list, args[0][1:], shortopts, args[1:]) return list, args def do_longs(list, opt, longopts, args): try: - i = string.index(opt, '=') - opt, optarg = opt[:i], opt[i+1:] + i = string.index(opt, '=') + opt, optarg = opt[:i], opt[i+1:] except ValueError: - optarg = None + optarg = None has_arg, opt = long_has_args(opt, longopts) if has_arg: - if optarg is None: - if not args: - raise error, 'option --%s requires argument' % opt - optarg, args = args[0], args[1:] + if optarg is None: + if not args: + raise error, 'option --%s requires argument' % opt + optarg, args = args[0], args[1:] elif optarg: - raise error, 'option --%s must not have an argument' % opt + raise error, 'option --%s must not have an argument' % opt list.append(('--' + opt, optarg or '')) return list, args @@ -70,35 +70,35 @@ def do_longs(list, opt, longopts, args): def long_has_args(opt, longopts): optlen = len(opt) for i in range(len(longopts)): - x, y = longopts[i][:optlen], longopts[i][optlen:] - if opt != x: - continue - if y != '' and y != '=' and i+1 < len(longopts): - if opt == longopts[i+1][:optlen]: - raise error, 'option --%s not a unique prefix' % opt - if longopts[i][-1:] in ('=', ): - return 1, longopts[i][:-1] - return 0, longopts[i] + x, y = longopts[i][:optlen], longopts[i][optlen:] + if opt != x: + continue + if y != '' and y != '=' and i+1 < len(longopts): + if opt == longopts[i+1][:optlen]: + raise error, 'option --%s not a unique prefix' % opt + if longopts[i][-1:] in ('=', ): + return 1, longopts[i][:-1] + return 0, longopts[i] raise error, 'option --' + opt + ' not recognized' def do_shorts(list, optstring, shortopts, args): while optstring != '': - opt, optstring = optstring[0], optstring[1:] - if short_has_arg(opt, shortopts): - if optstring == '': - if not args: - raise error, 'option -%s requires argument' % opt - optstring, args = args[0], args[1:] - optarg, optstring = optstring, '' - else: - optarg = '' - list.append(('-' + opt, optarg)) + opt, optstring = optstring[0], optstring[1:] + if short_has_arg(opt, shortopts): + if optstring == '': + if not args: + raise error, 'option -%s requires argument' % opt + optstring, args = args[0], args[1:] + optarg, optstring = optstring, '' + else: + optarg = '' + list.append(('-' + opt, optarg)) return list, args def short_has_arg(opt, shortopts): for i in range(len(shortopts)): - if opt == shortopts[i] != ':': - return shortopts[i+1:i+2] == ':' + if opt == shortopts[i] != ':': + return shortopts[i+1:i+2] == ':' raise error, 'option -%s not recognized' % opt if __name__ == '__main__': |