Copyright | (c) Eric Mertens 2017 |
---|---|
License | ISC |
Maintainer | emertens@gmail.com |
Safe Haskell | None |
Language | Haskell2010 |
This module automates the extraction of a decoded value from a configuration value according to a specification as built using Config.Schema.Spec.
Synopsis
- loadValue :: ValueSpec a -> Value p -> Either (ValueSpecMismatch p) a
- loadValueFromFile :: ValueSpec a -> FilePath -> IO a
- data ValueSpecMismatch p = ValueSpecMismatch p Text (NonEmpty (PrimMismatch p))
- data PrimMismatch p = PrimMismatch Text (Problem p)
- data Problem p
Documentation
:: ValueSpec a | specification |
-> Value p | value |
-> Either (ValueSpecMismatch p) a | errors or decoded value |
Read a configuration file, parse it, and validate it according to the given specification.
Throws IOError
, ParseError
, or ValueSpecMismatch
Errors
data ValueSpecMismatch p Source #
Newtype wrapper for schema load errors.
ValueSpecMismatch p Text (NonEmpty (PrimMismatch p)) | Problem value and list of specification failures |
Instances
Show p => Show (ValueSpecMismatch p) Source # | |
Defined in Config.Schema.Load.Error showsPrec :: Int -> ValueSpecMismatch p -> ShowS # show :: ValueSpecMismatch p -> String # showList :: [ValueSpecMismatch p] -> ShowS # | |
ErrorAnnotation p => Exception (ValueSpecMismatch p) Source # |
|
Defined in Config.Schema.Load.Error toException :: ValueSpecMismatch p -> SomeException # fromException :: SomeException -> Maybe (ValueSpecMismatch p) # displayException :: ValueSpecMismatch p -> String # |
data PrimMismatch p Source #
Type for errors that can be encountered while decoding a value according to a specification. The error includes a key path indicating where in the configuration file the error occurred.
PrimMismatch Text (Problem p) | spec description and problem |
Instances
Show p => Show (PrimMismatch p) Source # | |
Defined in Config.Schema.Load.Error showsPrec :: Int -> PrimMismatch p -> ShowS # show :: PrimMismatch p -> String # showList :: [PrimMismatch p] -> ShowS # |
MissingSection Text | missing section name |
UnusedSections (NonEmpty Text) | unused section names |
SubkeyProblem Text (ValueSpecMismatch p) | nested error in given section |
ListElementProblem Int (ValueSpecMismatch p) | nested error in given list element |
NestedProblem (ValueSpecMismatch p) | generic nested error |
TypeMismatch | value and spec type mismatch |
CustomProblem Text | custom spec error message |
WrongAtom | atoms didn't match |