aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2018-11-14 11:44:56 +0000
committerGravatar jesopo2018-11-14 11:44:56 +0000
commit2fcde64bfd6ad5b1f54754f8fffa0b7fdb7ca136 (patch)
tree59cd5b97d5027d4c1477308794da112cd97b54b0
parentAdd 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
-rw-r--r--src/utils/consts.py8
-rw-r--r--src/utils/irc.py37
2 files changed, 24 insertions, 21 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,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