|
1 | 1 | #!/usr/bin/env python3
|
2 |
| -"""Print ASCII table""" |
| 2 | +""" Make ASCII table """ |
3 | 3 |
|
4 | 4 | import argparse
|
5 |
| -import os |
6 |
| -import sys |
7 |
| -import string |
8 | 5 | from itertools import zip_longest
|
9 | 6 | from tabulate import tabulate
|
| 7 | +import pandas as pd |
| 8 | +from pprint import pprint |
| 9 | + |
| 10 | + |
| 11 | +# -------------------------------------------------- |
| 12 | +def get_args(): |
| 13 | + """Get command-line arguments""" |
| 14 | + |
| 15 | + parser = argparse.ArgumentParser( |
| 16 | + description='Make ASCII table', |
| 17 | + formatter_class=argparse.ArgumentDefaultsHelpFormatter) |
| 18 | + |
| 19 | + parser.add_argument('-c', |
| 20 | + '--cols', |
| 21 | + help='Number of columns', |
| 22 | + metavar='int', |
| 23 | + type=int, |
| 24 | + default=8) |
| 25 | + |
| 26 | + parser.add_argument('-l', |
| 27 | + '--lower', |
| 28 | + help='Lower chr value', |
| 29 | + metavar='int', |
| 30 | + type=int, |
| 31 | + default=0) |
| 32 | + |
| 33 | + parser.add_argument('-u', |
| 34 | + '--upper', |
| 35 | + help='Upper chr value', |
| 36 | + metavar='int', |
| 37 | + type=int, |
| 38 | + default=128) |
| 39 | + |
| 40 | + args = parser.parse_args() |
| 41 | + |
| 42 | + if args.lower < 0: |
| 43 | + parser.error(f'--lower "{args.lower}" must be >= 0') |
| 44 | + |
| 45 | + if args.upper > 128: |
| 46 | + parser.error(f'--upper "{args.upper}" must be <= 128') |
| 47 | + |
| 48 | + if args.lower > args.upper: |
| 49 | + args.lower, args.upper = args.upper, args.lower |
| 50 | + |
| 51 | + return args |
10 | 52 |
|
11 | 53 |
|
12 | 54 | # --------------------------------------------------
|
13 | 55 | def main():
|
14 | 56 | """Make a jazz noise here"""
|
15 | 57 |
|
16 |
| - for chunk in chunker(range(128), 8): |
17 |
| - print(' '.join(map(cell, chunk))) |
| 58 | + args = get_args() |
| 59 | + lower = args.lower |
| 60 | + upper = args.upper |
| 61 | + num_cells = args.upper - args.lower |
| 62 | + num_rows = round(num_cells / args.cols) |
| 63 | + cells = list(chunker(list(map(cell, range(lower, upper))), num_rows)) |
| 64 | + df = pd.DataFrame(cells) |
| 65 | + |
| 66 | + for i, row in df.T.iterrows(): |
| 67 | + print(' '.join(map(lambda v: v or ' ' * 5, row))) |
18 | 68 |
|
19 | 69 |
|
20 | 70 | # --------------------------------------------------
|
|
0 commit comments