aboutsummaryrefslogtreecommitdiffstats
path: root/bin/colo
diff options
context:
space:
mode:
Diffstat (limited to 'bin/colo')
-rwxr-xr-xbin/colo136
1 files changed, 136 insertions, 0 deletions
diff --git a/bin/colo b/bin/colo
new file mode 100755
index 0000000..ac2818d
--- /dev/null
+++ b/bin/colo
@@ -0,0 +1,136 @@
+#!/usr/bin/env python3
+# _*_ coding=utf-8 _*_
+
+import argparse
+import code
+import os
+import signal
+import sys
+from html.parser import HTMLParser
+
+
+# BASH_STR = 'printf "\x1b[38;5;XXXmcolourXXX YYY \x1b[0m\t";'
+BASH_STR = '\x1b[38;5;XXXmcolourXXX YYY \x1b[0m\t'
+BASH_ANSI_STR = '\\x1b[38;5;XXXm'
+COLO_LIST = []
+LJUST_CONST = 4
+
+
+def SigHandler_SIGINT(signum, frame):
+ print()
+ sys.exit(0)
+
+
+class Argparser(object):
+ def __init__(self):
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--ansi", action="store_true",
+ help="bool", default=False)
+ parser.add_argument("--hsi", action="store_true",
+ help="bool", default=False)
+ parser.add_argument("--rgb", action="store_true",
+ help="bool", default=False)
+ parser.add_argument("--number", action="store_true",
+ help="bool", default=False)
+ parser.add_argument("--name", action="store_true",
+ help="bool", default=False)
+ parser.add_argument("--hex", action="store_true",
+ help="bool", default=False)
+ parser.add_argument("--dbg", action="store_true",
+ help="debug", default=False)
+ self.args = parser.parse_args()
+
+
+class ColoParser(HTMLParser):
+ def handle_data(self, data):
+ if data == "\n":
+ pass
+ else:
+ COLO_LIST.append(data)
+
+
+def premain(argparser):
+ signal.signal(signal.SIGINT, SigHandler_SIGINT)
+ # here
+ PRINT_LIST = str()
+ with open(os.path.dirname(sys.argv[0])+"/index.html", "r") as colo:
+ lines = colo.readlines()
+ for line in lines:
+ parser = ColoParser()
+ parser.feed(line)
+ NUMBER_COLO_LIST = [COLO_LIST[j]
+ for j in range(0, len(COLO_LIST)) if ((j+1) % 5) == 1]
+
+ if argparser.args.hsi:
+ HSL_COLO_LIST = [COLO_LIST[j]
+ for j in range(0, len(COLO_LIST)) if ((j+1) % 5) == 0]
+ for i in range(0, len(NUMBER_COLO_LIST)):
+ if i % 6 == 0 and i != 0:
+ PRINT_LIST += "\n"
+ PRINT_LIST += BASH_STR.replace("XXX", NUMBER_COLO_LIST[i]).replace(
+ "YYY", HSL_COLO_LIST[i])
+ elif argparser.args.rgb:
+ RGB_COLO_LIST = [COLO_LIST[j]
+ for j in range(0, len(COLO_LIST)) if ((j+1) % 5) == 4]
+ for i in range(0, len(NUMBER_COLO_LIST)):
+ if i % 6 == 0 and i != 0:
+ PRINT_LIST += "\n"
+ PRINT_LIST += BASH_STR.replace("XXX", NUMBER_COLO_LIST[i]).replace(
+ "YYY", RGB_COLO_LIST[i])
+ elif argparser.args.number:
+ for i in range(0, len(NUMBER_COLO_LIST)):
+ if i % 12 == 0 and i != 0:
+ PRINT_LIST += "\n"
+ PRINT_LIST += BASH_STR.replace("XXX", NUMBER_COLO_LIST[i]).replace(
+ "YYY", NUMBER_COLO_LIST[i])
+ elif argparser.args.name:
+ NAME_COLO_LIST = [COLO_LIST[j]
+ for j in range(0, len(COLO_LIST)) if ((j+1) % 5) == 2]
+ for i in range(0, len(NUMBER_COLO_LIST)):
+ if i % 6 == 0 and i != 0:
+ PRINT_LIST += "\n"
+ PRINT_LIST += BASH_STR.replace("XXX", NUMBER_COLO_LIST[i]).replace(
+ "YYY", NAME_COLO_LIST[i])
+ elif argparser.args.hex:
+ HEX_COLO_LIST = [COLO_LIST[j]
+ for j in range(0, len(COLO_LIST)) if ((j+1) % 5) == 3]
+ for i in range(0, len(NUMBER_COLO_LIST)):
+ if i % 8 == 0 and i != 0:
+ PRINT_LIST += "\n"
+ PRINT_LIST += BASH_STR.replace("XXX", NUMBER_COLO_LIST[i]).replace(
+ "YYY", HEX_COLO_LIST[i])
+ elif argparser.args.ansi:
+ for i in range(0, len(NUMBER_COLO_LIST)):
+ if i % 6 == 0 and i != 0:
+ PRINT_LIST += "\n"
+ PRINT_LIST += BASH_STR.replace("XXX", NUMBER_COLO_LIST[i]).replace(
+ "YYY", BASH_ANSI_STR.replace("XXX", NUMBER_COLO_LIST[i]))
+ else:
+ for i in range(0, len(NUMBER_COLO_LIST)):
+ if i % 12 == 0 and i != 0:
+ PRINT_LIST += "\n"
+ PRINT_LIST += BASH_STR.replace("XXX", NUMBER_COLO_LIST[i]).replace(
+ "YYY", NUMBER_COLO_LIST[i])
+ print(PRINT_LIST)
+
+
+def main():
+ argparser = Argparser()
+ if argparser.args.dbg:
+ try:
+ premain(argparser)
+ except Exception as e:
+ if hasattr(e, "__doc__"):
+ print(e.__doc__)
+ if hasattr(e, "message"):
+ print(e.message)
+ variables = globals().copy()
+ variables.update(locals())
+ shell = code.InteractiveConsole(variables)
+ shell.interact(banner="DEBUG REPL")
+ else:
+ premain(argparser)
+
+
+if __name__ == "__main__":
+ main()