From 2fcde64bfd6ad5b1f54754f8fffa0b7fdb7ca136 Mon Sep 17 00:00:00 2001 From: jesopo Date: Wed, 14 Nov 2018 11:44:56 +0000 Subject: [PATCH] 'ANSI_RESET' -> 'ANSI_BOLD_RESET' typo, 'ansi_bold' -> 'color_bold' clarification, fix issue in color tokenizing that caused bolds to be put in the wrong place --- src/utils/consts.py | 8 ++++---- src/utils/irc.py | 47 ++++++++++++++++++++++++--------------------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/utils/consts.py b/src/utils/consts.py index 8b3a28db..687375f5 100644 --- a/src/utils/consts.py +++ b/src/utils/consts.py @@ -4,15 +4,15 @@ BITBOT_HOOKS_MAGIC = "__bitbot_hooks" BITBOT_EXPORTS_MAGIC = "__bitbot_exports" class IRCColor(object): - def __init__(self, irc: int, ansi: int, ansi_bold: bool): + def __init__(self, irc: int, ansi: int, color_bold: bool): self.irc = irc self.ansi = ansi - self.ansi_bold = ansi_bold + self.color_bold = color_bold COLOR_NAMES = {} COLOR_CODES = {} -def _color(name: str, irc: int, ansi: int, ansi_bold: bool): - color = IRCColor(irc, ansi, ansi_bold) +def _color(name: str, irc: int, ansi: int, color_bold: bool): + color = IRCColor(irc, ansi, color_bold) COLOR_NAMES[name] = color COLOR_CODES[irc] = color return color diff --git a/src/utils/irc.py b/src/utils/irc.py index f4973df1..af103d6f 100644 --- a/src/utils/irc.py +++ b/src/utils/irc.py @@ -151,6 +151,22 @@ def _color_tokens(s: str) -> typing.List[str]: matches = [] # type: typing.List[str] for char in s: + if is_color: + if char.isdigit(): + if background: + background += char + else: + foreground += char + continue + elif char == ",": + background += char + continue + else: + matches.append("\x03%s%s" % (foreground, background)) + is_color = False + foreground = "" + background = "" + if char == utils.consts.COLOR: if is_color: matches.append(char) @@ -158,24 +174,11 @@ def _color_tokens(s: str) -> typing.List[str]: is_color = True elif char == utils.consts.BOLD: matches.append(char) - elif is_color: - if char.isdigit(): - if background: - background += char - else: - foreground += char - elif char == ",": - background += char - else: - matches.append("\x03%s%s" % (foreground, background)) - is_color = False - foreground = "" - background = "" return matches def to_ansi_colors(s: str) -> str: color = False - ansi_bold = False + color_bold = False bold = False for token in _color_tokens(s): @@ -189,25 +192,25 @@ def to_ansi_colors(s: str) -> str: code = int(foreground_match.lstrip("0") or "0") foreground = utils.consts.COLOR_CODES[code] - if ansi_bold and not foreground.ansi_bold and not bold: - ansi_bold = False - replace += utils.consts.ANSI_RESET + if color_bold and not foreground.color_bold and not bold: + color_bold = False + replace += utils.consts.ANSI_BOLD_RESET color = True replace += utils.consts.ANSI_FORMAT % foreground.ansi - if foreground.ansi_bold: - ansi_bold = True + if foreground.color_bold: + color_bold = True replace += utils.consts.ANSI_BOLD else: if color: replace += utils.consts.ANSI_COLOR_RESET - if ansi_bold and not bold: + if color_bold and not bold: replace += utils.consts.ANSI_BOLD_RESET color = False - ansi_bold = False + color_bold = False elif type == utils.consts.BOLD: if bold: - if not ansi_bold: + if not color_bold: replace += utils.consts.ANSI_BOLD_RESET else: replace += utils.consts.ANSI_BOLD