diff --git a/linenumbers.py b/linenumbers.py index 5715723..c9c3186 100644 --- a/linenumbers.py +++ b/linenumbers.py @@ -1,12 +1,28 @@ +import argparse import sys -from voussoirkit import clipext +from voussoirkit import pipeable -if len(sys.argv) == 1: - sys.argv.append('!i') -text = clipext.resolve(sys.argv[1]) -lines = text.splitlines() -digits = len(str(len(lines))) -form = '{no:>0%d} | {line}' % digits -for (index, line) in enumerate(lines): - print(form.format(no=index+1, line=line)) +def linenumbers_argparse(args): + lines = pipeable.input(args.source, read_files=True) + if args.lazy: + form = '{no} | {line}' + else: + lines = list(lines) + digits = len(str(len(lines))) + form = '{no:>0%d} | {line}' % digits + for (index, line) in enumerate(lines): + print(form.format(no=index+1, line=line)) + +def main(argv): + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument('source') + parser.add_argument('--lazy', dest='lazy', action='store_true') + parser.set_defaults(func=linenumbers_argparse) + + args = parser.parse_args(argv) + return args.func(args) + +if __name__ == '__main__': + raise SystemExit(main(sys.argv[1:]))