module HaskellCI.Optimization where import Control.Applicative ((<|>)) import qualified Distribution.Compat.CharParsing as C import qualified Distribution.Parsec.Class 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