| Copyright | (c) Eric Mertens 2017 |
|---|---|
| License | ISC |
| Maintainer | emertens@gmail.com |
| Safe Haskell | None |
| Language | Haskell2010 |
Config.Schema.Load
Contents
Description
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
- = MissingSection Text
- | UnusedSections (NonEmpty Text)
- | SubkeyProblem Text (ValueSpecMismatch p)
- | ListElementProblem Int (ValueSpecMismatch p)
- | NestedProblem (ValueSpecMismatch p)
- | TypeMismatch
- | CustomProblem Text
- | WrongAtom
Documentation
Arguments
| :: ValueSpec a | specification |
| -> Value p | value |
| -> Either (ValueSpecMismatch p) a | errors or decoded value |
Arguments
| :: ValueSpec a | specification |
| -> FilePath | filename |
| -> IO a |
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.
Constructors
| 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 Methods 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 Methods 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.
Constructors
| PrimMismatch Text (Problem p) | spec description and problem |
Instances
| Show p => Show (PrimMismatch p) Source # | |
Defined in Config.Schema.Load.Error Methods showsPrec :: Int -> PrimMismatch p -> ShowS show :: PrimMismatch p -> String showList :: [PrimMismatch p] -> ShowS | |
Constructors
| 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 |