module PulseLambda.Debuggable
( Debuggable
, debug
, ansiColorRedBright
, ansiColorGreenBright
, ansiColorYellowBright
, ansiColorBlueBright
, ansiColorMagentaBright
, ansiColorCyanBright
, ansiColorRed
, ansiColorGreen
, ansiColorYellow
, ansiColorBlue
, ansiColorMagenta
, ansiColorCyan
, ansiColorReset
) where

class Debuggable a where
    debug :: a -> String

ansiColorRedBright :: String
ansiColorRedBright = "\x1b[31;1m"

ansiColorGreenBright :: String
ansiColorGreenBright = "\x1b[32;1m"

ansiColorYellowBright :: String
ansiColorYellowBright = "\x1b[33;1m"

ansiColorBlueBright :: String
ansiColorBlueBright = "\x1b[34;1m"

ansiColorMagentaBright :: String
ansiColorMagentaBright = "\x1b[35;1m"

ansiColorCyanBright :: String
ansiColorCyanBright = "\x1b[36;1m"

ansiColorRed :: String
ansiColorRed = "\x1b[31m"

ansiColorGreen :: String
ansiColorGreen = "\x1b[32m"

ansiColorYellow :: String
ansiColorYellow = "\x1b[33m"

ansiColorBlue :: String
ansiColorBlue = "\x1b[34m"

ansiColorMagenta :: String
ansiColorMagenta = "\x1b[35m"

ansiColorCyan :: String
ansiColorCyan = "\x1b[36m"

ansiColorReset :: String
ansiColorReset = "\x1b[0m"
