diff options
| author | Mattias Andrée <maandree@operamail.com> | 2012-10-28 21:35:52 +0100 | 
|---|---|---|
| committer | Mattias Andrée <maandree@operamail.com> | 2012-10-28 21:35:52 +0100 | 
| commit | e4fe6a0bb7020c7d189590e8bf767d82cbb1c0db (patch) | |
| tree | b1c611dcdba59e929203de7ef6911c8a3601fcc0 | |
| parent | use reflection to get a generator for the specified shell (diff) | |
| download | auto-auto-complete-e4fe6a0bb7020c7d189590e8bf767d82cbb1c0db.tar.gz auto-auto-complete-e4fe6a0bb7020c7d189590e8bf767d82cbb1c0db.tar.bz2 auto-auto-complete-e4fe6a0bb7020c7d189590e8bf767d82cbb1c0db.tar.xz | |
invokable from another python file
| -rwxr-xr-x | auto-auto-complete.py | 78 | 
1 files changed, 45 insertions, 33 deletions
| diff --git a/auto-auto-complete.py b/auto-auto-complete.py index 4280e61..a38ee94 100755 --- a/auto-auto-complete.py +++ b/auto-auto-complete.py @@ -180,13 +180,56 @@ class GeneratorBASH:  '''  mane! + +@param  shell:str   Shell to generato completion for +@param  output:str  Output file +@param  source:str  Source file +''' +def main(shell, outputm source) +    with open(source, 'rb') as file: +        source = file.read().decode('utf8', 'replace') +    source = Parser.parse(source) +    Parser.simplify(source) +     +    program = source[0] +    unargumented = [] +    argumented = [] +    variadic = [] +    suggestion = [] +     +    for item in source[1:]: +        if item[0] == 'unargumented': +            unargumented.append(item[1:]); +        elif item[0] == 'argumented': +            argumented.append(item[1:]); +        elif item[0] == 'variadic': +            variadic.append(item[1:]); +        elif item[0] == 'suggestion': +            suggestion.append(item[1:]); +     +    for group in (unargumented, argumented, variadic): +        for index in range(0, len(group)): +            item = group[index] +            map = {} +            for elem in item: +                map[elem[0]] = elem[1:] +            group[index] = map +     +    generator = 'Generator' + shell.upper() +    generator = globals()[generator] +    generator = generator(program, unargumented, argumented, variadic, suggestion) + + + +''' +mane!  '''  if __name__ == '__main__':      if len(sys.argv) != 6:          print("USAGE: auto-auto-complete SHELL --output OUTPUT_FILE --source SOURCE_FILE")          exit(1) -    shell = sys.argv[1].upper() +    shell = sys.argv[1]      output = None      source = None @@ -221,36 +264,5 @@ if __name__ == '__main__':      if output is None: raise Exception('Unused option: --output')      if source is None: raise Exception('Unused option: --source') -    with open(source, 'rb') as file: -        source = file.read().decode('utf8', 'replace') -    source = Parser.parse(source) -    Parser.simplify(source) -     -    program = source[0] -    unargumented = [] -    argumented = [] -    variadic = [] -    suggestion = [] -     -    for item in source[1:]: -        if item[0] == 'unargumented': -            unargumented.append(item[1:]); -        elif item[0] == 'argumented': -            argumented.append(item[1:]); -        elif item[0] == 'variadic': -            variadic.append(item[1:]); -        elif item[0] == 'suggestion': -            suggestion.append(item[1:]); -     -    for group in (unargumented, argumented, variadic): -        for index in range(0, len(group)): -            item = group[index] -            map = {} -            for elem in item: -                map[elem[0]] = elem[1:] -            group[index] = map -     -    generator = 'Generator' + shell -    generator = globals()[generator] -    generator = generator(program, unargumented, argumented, variadic, suggestion) +    main(shell= shell, output= output, source= source) | 
