""" Entry point for rainbow parenthesis. Reads a string from stdin, and outputs it to stdout with all parenthesis prettily colored. """ from . import colorize, Colored, __version__ from . import term import argparse def build_argparse() -> argparse.ArgumentParser: """ Construct the argument parser for ``rainbow`` . This is mostly a separate procedure to allow direct generation of man pages. """ parser = argparse.ArgumentParser(prog='rainbow') parser.add_argument('input', type=argparse.FileType('r'), nargs='?', default='-') parser.add_argument('--version', action='version', version=f'%(prog)s {__version__}') return parser def main(): """Interactive entry point for the program.""" parser = build_argparse() args = parser.parse_args() for item in colorize(args.input): match item: case Colored(): print(term.colorize(item), end='') case s: print(s, end='') if __name__ == '__main__': main()