25 | | RGB Bits8 Bits8 Bits8
27 | Cast Color String where
36 | cast BrightBlack = "8"
37 | cast BrightRed = "9"
38 | cast BrightGreen = "10"
39 | cast BrightYellow = "11"
40 | cast BrightBlue = "12"
41 | cast BrightMagenta = "13"
42 | cast BrightCyan = "14"
43 | cast BrightWhite = "15"
44 | cast (Color256 c) = show c
45 | cast (RGB r g b) = "\{show r};\{show g};\{show b}"
60 | public export %inline
64 | public export %inline
65 | NormalIntensity : Style
66 | NormalIntensity = NotBoldOrFaint
68 | Cast Style String where
71 | cast NotBoldOrFaint = "22"
73 | cast NotItalic = "23"
74 | cast SingleUnderline = "4"
75 | cast DoubleUnderline = "21"
76 | cast NoUnderline = "24"
78 | cast NotStriked = "29"
81 | data Blink = Slow | Rapid | NoBlink
83 | Cast Blink String where
91 | | SetForeground Color
92 | | SetBackground Color
99 | escapeSGR : List SGR -> String
100 | escapeSGR xs = "\x1B[\{params}m"
102 | toCode : SGR -> String
104 | toCode (SetForeground c@(RGB {})) = "38;2;" ++ cast c
105 | toCode (SetBackground c@(RGB {})) = "48;2;" ++ cast c
106 | toCode (SetForeground c) = "38;5;" ++ cast c
107 | toCode (SetBackground c) = "48;5;" ++ cast c
108 | toCode (SetStyle s) = cast s
109 | toCode (SetBlink b) = cast b
110 | toCode (SetReversed True) = "7"
111 | toCode (SetReversed False) = "27"
114 | params = fastConcat $
intersperse ";" $
toCode <$> xs