loglevel-0.1.0.0: src/System/LogLevel.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE UnicodeSyntax #-}
-- |
-- Module: System.LogLevel
-- Copyright: Copyright © 2018 Lars Kuhtz <lakuhtz@gmail.com>
-- License: MIT
-- Maintainer: Lars Kuhtz <lakuhtz@gmail.com>
-- Stability: experimental
--
-- Log Level Datatype
--
module System.LogLevel
( LogLevel(..)
, logLevelToText
, logLevelFromText
) where
import Control.DeepSeq
import Data.Char
import Data.String
import qualified Data.Text as T
import GHC.Generics
data LogLevel
= Quiet
| Error
| Warn
| Info
| Debug
| Other T.Text
deriving (Show, Read, Eq, Ord, Generic)
instance NFData LogLevel
instance IsString LogLevel where
fromString s = case toLower <$> s of
"quiet" → Quiet
"error" → Error
"warn" → Warn
"info" → Info
"debug" → Debug
_ → Other (T.pack s)
logLevelToText ∷ IsString a ⇒ LogLevel → a
logLevelToText (Other t) = fromString $ T.unpack t
logLevelToText l = fromString $ toLower <$> show l
logLevelFromText ∷ T.Text → LogLevel
logLevelFromText = fromString . T.unpack