70 lines
1.7 KiB
Python
Executable File
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('')
|
|
|