ribosome-0.4.0.0: lib/Ribosome/Data/Errors.hs
module Ribosome.Data.Errors(
ComponentName(..),
Errors(..),
Error(..),
componentErrors,
timestamp,
report,
) where
import qualified Data.Map.Strict as Map (toList)
import Data.Text.Prettyprint.Doc (Doc, Pretty(..), align, line, vsep, (<+>))
import Prelude hiding (error)
import Ribosome.Data.ErrorReport (ErrorReport(ErrorReport))
newtype ComponentName =
ComponentName Text
deriving (Eq, Ord, Show)
data Error =
Error {
_timestamp :: Int,
_report :: ErrorReport
}
deriving (Eq, Show)
makeClassy ''Error
instance Pretty Error where
pretty (Error stamp (ErrorReport _ lines' _)) =
pretty stamp <+> align (vsep (pretty <$> lines'))
newtype Errors =
Errors {
_componentErrors :: Map ComponentName [Error]
}
deriving (Eq, Show)
deriving newtype Default
makeClassy ''Errors
prettyComponentErrors :: ComponentName -> [Error] -> Doc a
prettyComponentErrors (ComponentName name) errors' =
line <> line <> pretty name <> ":" <> line <> vsep (pretty <$> errors')
instance Pretty Errors where
pretty (Errors errors') =
vsep (uncurry prettyComponentErrors <$> Map.toList errors')