Files
q-tools/reporting/ascii-codes.py
2018-10-22 22:06:29 +03:00

70 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python
import sys, os
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
import ansi
from argparse import ArgumentParser
def setup_options():
parser = ArgumentParser()
parser.add_argument(
"-v",
default = False,
action = "store_true"
)
parser.add_argument(
"cs",
type = str,
default = "cp437",
nargs = '?',
help = "Character set to show, ex. ascii, cp437, cp850, cp1250, latin1 ..."
)
opts=parser.parse_args()
return opts
def long_format(table):
bc = ansi.code()
for x,col in enumerate(table):
for y,row in enumerate(col):
bc.posprint(
y + 2,
1 + x*7,
bc.color_string(
"${c}%03d: ${G}%s${Z}"%( row )
)
)
def short_format(table):
bc = ansi.code()
for x,col in enumerate(table):
for y,row in enumerate(col):
bc.posprint(
x + 3,
y * 2 + 1,
bc.color_string(
"${G}%s${Z}"%( row[1], )
)
)
print('')
if __name__ == "__main__":
opts = setup_options()
table=[[] for x in range(8)]
for c in range(0,256):
col = c/32
table[col].append((c,chr(c).decode(opts.cs,'ignore').encode('utf-8','ignore')))
#sys.stdout.write(chr(c).decode('latin1'))
# remove control chars
table.pop(0)
bc = ansi.code()
bc.clear()
lines = int(32 - len(opts.cs)/2 - 2)
print(bc.color_string("="*lines + " ${Y}%s${Z} "%( opts.cs, ) + "="*lines))
if opts.v:
long_format(table)
else:
short_format(table)
print('')