generic-pretty-instances-0.1.0.0: src/Text/PrettyPrint/GenericPretty/Type.hs
module Text.PrettyPrint.GenericPretty.Type
( PrettyLog (..),
SecretVision (..),
)
where
import Text.PrettyPrint.GenericPretty (Out (..))
import Universum
data PrettyLog a
= PrettyLog a
| SecretLog SecretVision a
deriving stock (Eq, Ord)
data SecretVision
= SecretVisible
| SecretHidden
deriving stock (Eq, Ord, Show, Read, Generic)
instance Out SecretVision
instance (Out a) => Out (PrettyLog a) where
docPrec n = \case
PrettyLog x -> docPrec n x
SecretLog SecretVisible x -> docPrec n x
SecretLog SecretHidden _ -> "SECRET"
doc = \case
PrettyLog x -> doc x
SecretLog SecretVisible x -> doc x
SecretLog SecretHidden _ -> "SECRET"