Mercurial > hg > TextShaper
annotate textshaper/main.py @ 16:4e00a2ce0a06
move
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sat, 22 Feb 2014 16:56:41 -0800 |
parents | c3df7dccb02b |
children | df52326aa08d |
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]) | |
13 | 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 |