Mercurial > hg > TextShaper
annotate textshaper/main.py @ 12:5b70bbff04b1
STUB: textshaper/main.py
| author | Jeff Hammel <k0scist@gmail.com> |
|---|---|
| date | Sat, 25 Jan 2014 18:09:48 -0800 |
| parents | 71fb16088d54 |
| children | c3df7dccb02b |
| rev | line source |
|---|---|
| 0 | 1 #!/usr/bin/env python |
| 2 # -*- coding: utf-8 -*- | |
| 3 | |
| 4 """ | |
| 4 | 5 package to shape text blocks |
| 0 | 6 """ |
| 7 | |
| 8 import optparse | |
| 9 import os | |
| 10 import subprocess | |
| 11 import sys | |
| 3 | 12 import time |
| 0 | 13 |
| 12 | 14 def info(content): |
| 15 """gathers info about the content and returns a dict""" | |
| 16 lines = content.splitlines() | |
| 17 return {'lines': len(lines), | |
| 18 'chars': len(content), | |
| 19 'columns': max([len(line) for line in lines]) | |
| 20 } | |
| 21 | |
| 22 def display(content, keys=('lines', 'chars', 'columns'), hr='--'): | |
| 4 | 23 print content |
| 12 | 24 if keys: |
| 25 _info = info(content) | |
| 26 print (hr) | |
| 27 print ('; '.join(['{}: {}'.format(key, _info[key]) | |
| 28 for key in keys]) | |
| 4 | 29 |
| 0 | 30 def add_options(parser): |
| 31 """add options to the OptionParser instance""" | |
| 32 | |
|
9
71fb16088d54
add file for indentation; wth did my work go??? :(
Jeff Hammel <k0scist@gmail.com>
parents:
5
diff
changeset
|
33 # TODO |
|
71fb16088d54
add file for indentation; wth did my work go??? :(
Jeff Hammel <k0scist@gmail.com>
parents:
5
diff
changeset
|
34 # parser.add_option('-c', '--clip', '--copy', dest='copy_to_clipboard', |
|
71fb16088d54
add file for indentation; wth did my work go??? :(
Jeff Hammel <k0scist@gmail.com>
parents:
5
diff
changeset
|
35 # help="copy to given program on exit") |
|
71fb16088d54
add file for indentation; wth did my work go??? :(
Jeff Hammel <k0scist@gmail.com>
parents:
5
diff
changeset
|
36 |
| 0 | 37 def main(args=sys.argv[1:]): |
| 38 | |
| 39 # parse command line options | |
| 40 usage = '%prog [options] ...' | |
| 41 class PlainDescriptionFormatter(optparse.IndentedHelpFormatter): | |
| 42 """description formatter for console script entry point""" | |
| 43 def format_description(self, description): | |
| 44 if description: | |
| 45 return description.strip() + '\n' | |
| 46 else: | |
| 47 return '' | |
| 48 parser = optparse.OptionParser(usage=usage, description=__doc__, formatter=PlainDescriptionFormatter()) | |
| 49 options, args = parser.parse_args(args) | |
| 50 | |
| 3 | 51 # read from stdin |
| 52 content = sys.stdin.read() | |
| 53 | |
| 54 # print formatted content | |
| 4 | 55 display(content) |
| 3 | 56 |
| 57 while True: | |
| 58 time.sleep(1) # XXX | |
| 59 | |
| 0 | 60 if __name__ == '__main__': |
| 61 main() | |
| 62 |
