packages feed

currycarbon-0.3.0.0: src/Currycarbon/Utils.hs

module Currycarbon.Utils (
    CurrycarbonException (..),
    renderCurrycarbonException
) where

import           Control.Exception (Exception)

-- | Different exceptions for currycarbon
data CurrycarbonException =
    -- | An exception to describe an issue in the currycarbon CLI input parsing
      CurrycarbonCLIParsingException String
    -- | An exception to describe the case that a date is not in the range of
    -- the supplied calibration curve
    | CurrycarbonCalibrationRangeException String
    -- | An exception for CalPDFs that are unsuitable for certain purposes
    | CurrycarbonInvalidCalPDFException String
    -- | An exception for any issues with the CLI
    | CurrycarbonCLIException String
    deriving (Show)

instance Exception CurrycarbonException

renderCurrycarbonException :: CurrycarbonException -> String
renderCurrycarbonException (CurrycarbonCLIParsingException s) =
    "<!> Error: Input can not be parsed\n" ++ s
renderCurrycarbonException (CurrycarbonCalibrationRangeException i) =
    "<!> Error: Date outside of calibration range. Date ID: " ++ i
renderCurrycarbonException (CurrycarbonInvalidCalPDFException o) =
    "<!> Error: Invalid CalPDF for " ++ o ++
    ", either because all densities are 0 or one density is > 1"
renderCurrycarbonException (CurrycarbonCLIException s) =
    "<!> Error: " ++ s