'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
This commit is contained in:
parent
bcdbb3640c
commit
2fcde64bfd
2 changed files with 29 additions and 26 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue