import re
import klammer_base
import kutil

class Color(klammer_base.Klammer_base):
    def __init__(self, K):
        # kutil.msg()
        super().__init__(K)
        match = re.compile(r'([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)', re.S).match(self.rgb)
        if not match:
            raise Exception(
                'Error in color format: "{}".  '.format(K.rgb)
                + 'Should be "<r>,<g>,<b>", where the components are [0,1].')
        self.r, self.g, self.b = [float(c) for c in match.groups()]

    def html(self):
        result = 'rgb({},{},{})'.format(*[int(round(float(e*255))) for e in [self.r, self.g, self.b]])
        #result = f"rgb({self.r},{self.g},{self.b}"
        if self.text:
            result = f'<span style="color:{result}">{self.text}</span>'
        return result

    def tex(self):
        result = '\\color[rgb]{{{},{},{}}}'.format(self.r, self.g, self.b)
        if self.text:
            result = '{{{} {}}}'.format(result, self.text)
        return result
