Mercurial > hg > TextShaper
comparison textshaper/indent.py @ 24:0930c6884f8a
STUB: README.txt setup.py textshaper/indent.py
| author | Jeff Hammel <k0scist@gmail.com> |
|---|---|
| date | Sun, 23 Feb 2014 10:57:19 -0800 |
| parents | 0d0db0d79bfd |
| children | c23782a7b7ba |
comparison
equal
deleted
inserted
replaced
| 23:7ffe000f6f42 | 24:0930c6884f8a |
|---|---|
| 2 | 2 |
| 3 """ | 3 """ |
| 4 indentation of text blocks | 4 indentation of text blocks |
| 5 """ | 5 """ |
| 6 | 6 |
| 7 import optparse | 7 import argparse |
| 8 import os | 8 import os |
| 9 import sys | 9 import sys |
| 10 | 10 |
| 11 def indent(text, indentation=4, space=' ', strict=False): | 11 def indent(text, indentation=4, space=' ', strict=False): |
| 12 """ | 12 """ |
| 40 retval.append(line[index:]) | 40 retval.append(line[index:]) |
| 41 | 41 |
| 42 return retval | 42 return retval |
| 43 | 43 |
| 44 | 44 |
| 45 def add_arguments(parser): | |
| 46 parser.add_argument('infile', nargs='?', type=argparse.FileType('r'), | |
| 47 default=sys.stdin) | |
| 48 parser.add_argument('-o', '--output', dest='output', | |
| 49 help="output file or stdout if not given") | |
| 50 | |
| 45 def main(args=sys.argv[1:]): | 51 def main(args=sys.argv[1:]): |
| 46 # TODO : refactor to be more general and stuff | |
| 47 | 52 |
| 48 # parse command line | 53 # parse command line |
| 49 usage = '%prog [options] [file] [file2] [...]' | |
| 50 description = """indent files or stdin if no files given""" | 54 description = """indent files or stdin if no files given""" |
| 51 parser = optparse.OptionParser(usage=usage, description=__doc__) | 55 parser = argparse.Argument(description=__doc__) |
| 52 parser.add_option('-o', '--output', dest='output', | 56 add_arguments(parser) |
| 53 help="output file or stdout if not given") | 57 options = parser.parse_args(args) |
| 54 options, files = parser.parse_args(args) | |
| 55 | |
| 56 # input from files or stdin | |
| 57 if files: | |
| 58 missing = [not os.path.exists(filename) for filename in files] | |
| 59 if missing: | |
| 60 parser.error("File(s) not found: %s" % ', '.join(missing)) | |
| 61 def _files(): | |
| 62 for filename in files: | |
| 63 with open(f, 'r') as f: | |
| 64 yield f | |
| 65 else: | |
| 66 def _files(): | |
| 67 yield sys.stdin | |
| 68 | 58 |
| 69 # process input | 59 # process input |
| 70 for f in _files(): | 60 for f in _files(): |
| 71 print f | 61 |
| 62 # indent the text | |
| 63 indented = indent(f) | |
| 64 | |
| 65 # append to output | |
| 66 if options.output: | |
| 67 with open(options.output, 'a') as f: | |
| 68 f.write(indented) | |
| 69 else: | |
| 70 sys.stdout.write(indented) | |
| 72 | 71 |
| 73 if __name__ == '__main__': | 72 if __name__ == '__main__': |
| 74 main() | 73 main() |
