packages feed

polysemy-log-0.7.0.0: lib/Polysemy/Log/Data/Severity.hs

-- |Description: Internal
module Polysemy.Log.Data.Severity where

import qualified Data.Text as Text

-- |A log message's severity, or log level.
data Severity =
  Trace
  |
  Debug
  |
  Info
  |
  Warn
  |
  Error
  |
  Crit
  deriving stock (Eq, Show, Enum, Ord)

-- |Parse a 'Text' into a 'Severity'.
parseSeverity :: Text -> Maybe Severity
parseSeverity =
  Text.toLower >>> \case
    "trace" -> Just Trace
    "debug" -> Just Debug
    "info" -> Just Info
    "warn" -> Just Warn
    "error" -> Just Error
    "crit" -> Just Crit
    _ -> Nothing