haskell-ci-0.4: src/HaskellCI/Optimization.hs
module HaskellCI.Optimization where
import HaskellCI.Prelude
import qualified Distribution.Compat.CharParsing as C
import qualified Distribution.Parsec as C
import qualified Distribution.Pretty as C
import qualified Text.PrettyPrint as PP
data Optimization
= OptimizationOn
| OptimizationOff
| OptimizationLevel Int
deriving (Eq, Show)
instance C.Parsec Optimization where
parsec = boolean <|> numeric where
boolean = ite OptimizationOn OptimizationOff <$> C.parsec
numeric = OptimizationLevel <$> C.integral
ite t _ True = t
ite _ f False = f
instance C.Pretty Optimization where
pretty OptimizationOn = C.pretty True
pretty OptimizationOff = C.pretty False
pretty (OptimizationLevel l) = PP.int l