aboutsummaryrefslogblamecommitdiffstats
path: root/bin/colo
blob: 1f182a6bd2c452154a8fb9d3478f7ddab6e7c6e7 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                              

                                                  











                                          




















                                                                       














                                                   
                                                                         



                                 


                                                                            

                          




                                             



                                                                               

                                       
                            




                                             



                                                                               

                                       




                                                                               

                                          
                             




                                             



                                                                               

                                        
                            




                                             



                                                                               

                                       




                                                                               

                                                                        




                                                                               

                                          






















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