diff --git a/matrix/colors.py b/matrix/colors.py
index f789f56..2381d21 100644
--- a/matrix/colors.py
+++ b/matrix/colors.py
@@ -229,7 +229,6 @@ class Formatted(object):
return cls(parser.get_substrings())
def to_html(self):
- # TODO BG COLOR
def add_attribute(string, name, value):
if name == "bold" and value:
return "{bold_on}{text}{bold_off}".format(
@@ -257,17 +256,32 @@ class Formatted(object):
return "{code_on}{text}{code_off}".format(
code_on="", text=string, code_off="
"
)
- if name == "fgcolor" and value:
- return "{color_on}{text}{color_off}".format(
- color_on="".format(
- color=color_weechat_to_html(value)
- ),
- text=string,
- color_off="",
- )
return string
+ def add_color(string, fgcolor, bgcolor):
+ fgcolor_string = ""
+ bgcolor_string = ""
+
+ if fgcolor:
+ fgcolor_string = " data-mx-color={}".format(
+ color_weechat_to_html(fgcolor)
+ )
+
+ if bgcolor:
+ bgcolor_string = " data-mx-bg-color={}".format(
+ color_weechat_to_html(bgcolor)
+ )
+
+ return "{color_on}{text}{color_off}".format(
+ color_on="".format(
+ fg=fgcolor_string,
+ bg=bgcolor_string
+ ),
+ text=string,
+ color_off="",
+ )
+
def format_string(formatted_string):
text = formatted_string.text
attributes = formatted_string.attributes.copy()
@@ -283,6 +297,13 @@ class Formatted(object):
else:
text = add_attribute(text, "code", True)
attributes.pop("code")
+
+ elif attributes["fgcolor"] or attributes["bgcolor"]:
+ text = add_color(
+ text,
+ attributes["fgcolor"],
+ attributes["bgcolor"]
+ )
else:
for key, value in attributes.items():
text = add_attribute(text, key, value)
@@ -311,7 +332,6 @@ class Formatted(object):
return "".join(plain_string)
def to_weechat(self):
- # TODO BG COLOR
def add_attribute(string, name, value, attributes):
if not value:
return string
@@ -471,7 +491,6 @@ DEFAULT_ATTRIBUTES = {
class MatrixHtmlParser(HTMLParser):
- # TODO bg color
# TODO bullets
def __init__(self):
HTMLParser.__init__(self)
@@ -541,7 +560,7 @@ class MatrixHtmlParser(HTMLParser):
self.text = ""
elif tag == "font":
for key, value in attrs:
- if key == "color":
+ if key in ["data-mx-color", "color"]:
color = color_html_to_weechat(value)
if not color:
@@ -551,6 +570,17 @@ class MatrixHtmlParser(HTMLParser):
self.add_substring(self.text, self.attributes.copy())
self.text = ""
self.attributes["fgcolor"] = color
+
+ elif key in ["data-mx-bg-color"]:
+ color = color_html_to_weechat(value)
+ if not color:
+ continue
+
+ if self.text:
+ self.add_substring(self.text, self.attributes.copy())
+ self.text = ""
+ self.attributes["bgcolor"] = color
+
else:
pass