Files
q-tools/reporting/ascii-codes.py
2021-10-30 11:27:14 +03:00

71 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
import sys, os
sys.path.append(os.path.join(
os.path.dirname(os.path.realpath(__file__)),
"..", "py-packages", "markslider", "markslider"
))
import ansicodes
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 = ansicodes.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 = ansicodes.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 = int(c / 32)
try:
table[col].append(
(c, chr(c).encode('latin1').decode(opts.cs))
)
except UnicodeDecodeError:
table[col].append(
(c, " ")
)
# sys.stdout.write(chr(c).decode('latin1'))
# remove control chars
table.pop(0)
bc = ansicodes.code()
bc.clear()
if opts.v:
lines = int(25 - len(opts.cs) / 2 - 2)
else:
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("")