export enum EColor {
    Gray   = 30,
    Red    = 31,
    Green  = 32,
    Yellow = 33,
    Blue   = 34,
    Purple = 35,
    Cyan   = 36,
    White  = 37,

    BgGray   = 40,
    BgRed    = 41,
    BgGreen  = 42,
    BgYellow = 43,
    BgBlue   = 44,
    BgPurple = 45,
    BgCyan   = 46,
    BgWhite  = 47,
}

export class Color {
    public static Colorize(msg: any, color: EColor) { return `\\u001b[1;${color}m${msg}\\u001b[0m`; }

    public static White (msg: any) { return `\\u001b[1;${EColor.White }m${msg}\\u001b[0m`; }
    public static Red   (msg: any) { return `\\u001b[1;${EColor.Red   }m${msg}\\u001b[0m`; }
    public static Green (msg: any) { return `\\u001b[1;${EColor.Green }m${msg}\\u001b[0m`; }
    public static Yellow(msg: any) { return `\\u001b[1;${EColor.Yellow}m${msg}\\u001b[0m`; }
    public static Blue  (msg: any) { return `\\u001b[1;${EColor.Blue  }m${msg}\\u001b[0m`; }
    public static Purple(msg: any) { return `\\u001b[1;${EColor.Purple}m${msg}\\u001b[0m`; }
    public static Cyan  (msg: any) { return `\\u001b[1;${EColor.Cyan  }m${msg}\\u001b[0m`; }
    public static Gray  (msg: any) { return `\\u001b[1;${EColor.Gray  }m${msg}\\u001b[0m`; }

    public static BgWhite (msg: any) { return `\\u001b[1;${EColor.BgWhite }m${msg}\\u001b[0m`; }
    public static BgRed   (msg: any) { return `\\u001b[1;${EColor.BgRed   }m${msg}\\u001b[0m`; }
    public static BgGreen (msg: any) { return `\\u001b[1;${EColor.BgGreen }m${msg}\\u001b[0m`; }
    public static BgYellow(msg: any) { return `\\u001b[1;${EColor.BgYellow}m${msg}\\u001b[0m`; }
    public static BgBlue  (msg: any) { return `\\u001b[1;${EColor.BgBlue  }m${msg}\\u001b[0m`; }
    public static BgPurple(msg: any) { return `\\u001b[1;${EColor.BgPurple}m${msg}\\u001b[0m`; }
    public static BgCyan  (msg: any) { return `\\u001b[1;${EColor.BgCyan  }m${msg}\\u001b[0m`; }
    public static BgGray  (msg: any) { return `\\u001b[1;${EColor.BgGray  }m${msg}\\u001b[0m`; }
}