packages feed

gltf-loader-0.1.0.0: src/Text/GLTF/Loader/Errors.hs

module Text.GLTF.Loader.Errors
  ( Errors(..),
    _ReadError,
    _ImpossibleError
  ) where

import Lens.Micro (Traversal'())
import RIO

data Errors
  = ReadError Text
  | ImpossibleError
  deriving (Show, Eq, Typeable)

instance Display Errors where
  textDisplay = displayErrorText

_ReadError :: Traversal' Errors Text
_ReadError f (ReadError text) = ReadError <$> f text
_ReadError _ err = pure err

_ImpossibleError :: Traversal' Errors ()
_ImpossibleError f ImpossibleError = f () $> ImpossibleError
_ImpossibleError _ err = pure err

displayErrorText :: Errors -> Text
displayErrorText (ReadError txt) = txt
displayErrorText ImpossibleError = "An impossible error has occurred!"