packages feed

steeloverseer-0.1.0.2: src/ANSIColors.hs

module ANSIColors where

data ANSIColor = ANSIBlack | ANSIRed | ANSIGreen | ANSIYellow | ANSIBlue | ANSIMagenta | ANSICyan | ANSIWhite | ANSINone
    deriving (Ord, Eq)

instance Show ANSIColor where
    show ANSINone = "\27[0m" 
    show c = "\27[" ++ show cn ++ "m"
        where cn = 30 + colorNum c 

colorNum :: ANSIColor -> Int
colorNum c = length $ takeWhile (/= c) ansibow 

ansibow :: [ANSIColor]
ansibow = [ ANSIBlack
          , ANSIRed
          , ANSIGreen
          , ANSIYellow
          , ANSIBlue
          , ANSIMagenta
          , ANSICyan
          , ANSIWhite 
          ]

colorString :: ANSIColor -> String -> String
colorString c s = show c ++ s ++ show ANSINone