71 lines
1.8 KiB
Python
Executable File
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("")
|