aboutsummaryrefslogblamecommitdiffstats
path: root/bin/colo
blob: ac2818d27cd66a2414571f7373a3a6488cc8ebba (plain) (tree)







































































































































                                                                                
#!/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()