module Effectful.Zoo.Log.Data.Severity ( Severity (..), parseSeverity, ) where import GHC.Enum import Data.Text qualified as T import HaskellWorks.Prelude import HaskellWorks.ToText data Severity = Trace | Debug | Info | Warn | Error | Crit deriving stock (Int -> Severity Severity -> Int Severity -> [Severity] Severity -> Severity Severity -> Severity -> [Severity] Severity -> Severity -> Severity -> [Severity] (Severity -> Severity) -> (Severity -> Severity) -> (Int -> Severity) -> (Severity -> Int) -> (Severity -> [Severity]) -> (Severity -> Severity -> [Severity]) -> (Severity -> Severity -> [Severity]) -> (Severity -> Severity -> Severity -> [Severity]) -> Enum Severity forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a $csucc :: Severity -> Severity succ :: Severity -> Severity $cpred :: Severity -> Severity pred :: Severity -> Severity $ctoEnum :: Int -> Severity toEnum :: Int -> Severity $cfromEnum :: Severity -> Int fromEnum :: Severity -> Int $cenumFrom :: Severity -> [Severity] enumFrom :: Severity -> [Severity] $cenumFromThen :: Severity -> Severity -> [Severity] enumFromThen :: Severity -> Severity -> [Severity] $cenumFromTo :: Severity -> Severity -> [Severity] enumFromTo :: Severity -> Severity -> [Severity] $cenumFromThenTo :: Severity -> Severity -> Severity -> [Severity] enumFromThenTo :: Severity -> Severity -> Severity -> [Severity] Enum, Severity -> Severity -> Bool (Severity -> Severity -> Bool) -> (Severity -> Severity -> Bool) -> Eq Severity forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Severity -> Severity -> Bool == :: Severity -> Severity -> Bool $c/= :: Severity -> Severity -> Bool /= :: Severity -> Severity -> Bool Eq, (forall x. Severity -> Rep Severity x) -> (forall x. Rep Severity x -> Severity) -> Generic Severity forall x. Rep Severity x -> Severity forall x. Severity -> Rep Severity x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. Severity -> Rep Severity x from :: forall x. Severity -> Rep Severity x $cto :: forall x. Rep Severity x -> Severity to :: forall x. Rep Severity x -> Severity Generic, Eq Severity Eq Severity => (Severity -> Severity -> Ordering) -> (Severity -> Severity -> Bool) -> (Severity -> Severity -> Bool) -> (Severity -> Severity -> Bool) -> (Severity -> Severity -> Bool) -> (Severity -> Severity -> Severity) -> (Severity -> Severity -> Severity) -> Ord Severity Severity -> Severity -> Bool Severity -> Severity -> Ordering Severity -> Severity -> Severity forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: Severity -> Severity -> Ordering compare :: Severity -> Severity -> Ordering $c< :: Severity -> Severity -> Bool < :: Severity -> Severity -> Bool $c<= :: Severity -> Severity -> Bool <= :: Severity -> Severity -> Bool $c> :: Severity -> Severity -> Bool > :: Severity -> Severity -> Bool $c>= :: Severity -> Severity -> Bool >= :: Severity -> Severity -> Bool $cmax :: Severity -> Severity -> Severity max :: Severity -> Severity -> Severity $cmin :: Severity -> Severity -> Severity min :: Severity -> Severity -> Severity Ord, Int -> Severity -> ShowS [Severity] -> ShowS Severity -> [Char] (Int -> Severity -> ShowS) -> (Severity -> [Char]) -> ([Severity] -> ShowS) -> Show Severity forall a. (Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Severity -> ShowS showsPrec :: Int -> Severity -> ShowS $cshow :: Severity -> [Char] show :: Severity -> [Char] $cshowList :: [Severity] -> ShowS showList :: [Severity] -> ShowS Show) parseSeverity :: Text -> Maybe Severity parseSeverity :: Text -> Maybe Severity parseSeverity Text t = case Text -> Text T.toLower Text t of Text "trace" -> Severity -> Maybe Severity forall a. a -> Maybe a Just Severity Trace Text "debug" -> Severity -> Maybe Severity forall a. a -> Maybe a Just Severity Debug Text "info" -> Severity -> Maybe Severity forall a. a -> Maybe a Just Severity Info Text "warn" -> Severity -> Maybe Severity forall a. a -> Maybe a Just Severity Warn Text "error" -> Severity -> Maybe Severity forall a. a -> Maybe a Just Severity Error Text "crit" -> Severity -> Maybe Severity forall a. a -> Maybe a Just Severity Crit Text _ -> Maybe Severity forall a. Maybe a Nothing instance ToText Severity where toText :: Severity -> Text toText = \case Severity Trace -> Text "trace" Severity Debug -> Text "debug" Severity Info -> Text "info" Severity Warn -> Text "warn" Severity Error -> Text "error" Severity Crit -> Text "crit"