never executed always true always false
1 module HelVM.HelMA.Automaton.Types.DumpType where
2
3 import HelVM.HelMA.Automaton.Eff.MonadEff
4
5 import HelVM.HelIO.Extra
6
7 import Control.Monad.Logger
8
9 logDump :: (AppEff m , Show d) => DumpType -> d -> m ()
10 logDump dt d = logDump' $ dump dt d where
11 logDump' Nothing = pass
12 logDump' (Just t) = logInfoN $ logTupleToMessage ("dump" , t)
13 logTupleToMessage (k , v) = k <> ": " <> v
14
15 dump :: Show a => DumpType -> a -> Maybe Text
16 dump No _ = Nothing
17 dump Ugly a = Just $ show a
18 dump Pretty a = Just $ showP a
19
20 -- | Constructors
21 defaultDumpType :: DumpType
22 defaultDumpType = minBound
23
24 dumpTypes :: NonEmpty DumpType
25 dumpTypes = universeNonEmpty
26
27 -- | Types
28 data DumpType = No | Ugly | Pretty
29 deriving stock (Bounded , Enum , Eq , Read , Show)