diff options
| author | 2018-11-14 11:44:56 +0000 | |
|---|---|---|
| committer | 2018-11-14 11:44:56 +0000 | |
| commit | 2fcde64bfd6ad5b1f54754f8fffa0b7fdb7ca136 (patch) | |
| tree | 59cd5b97d5027d4c1477308794da112cd97b54b0 /src/utils/irc.py | |
| parent | Add type annotions to irc->ansi color functions (diff) | |
| signature | ||
'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
Diffstat (limited to 'src/utils/irc.py')
| -rw-r--r-- | src/utils/irc.py | 37 |
1 files changed, 20 insertions, 17 deletions
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,31 +151,34 @@ def _color_tokens(s: str) -> typing.List[str]: matches = [] # type: typing.List[str] for char in s: - if char == utils.consts.COLOR: - if is_color: - matches.append(char) - else: - is_color = True - elif char == utils.consts.BOLD: - matches.append(char) - elif is_color: + 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) + else: + is_color = True + elif char == utils.consts.BOLD: + matches.append(char) 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 |
