config-schema-1.2.0.0: Schema definitions for the config-value package
Copyright(c) Eric Mertens 2017
LicenseISC
Maintaineremertens@gmail.com
Safe HaskellNone
LanguageHaskell2010

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

Documentation

loadValue Source #

Arguments

:: ValueSpec a

specification

-> Value p

value

-> Either (ValueSpecMismatch p) a

errors or decoded value

Match a Value against a ValueSpec and return either the interpretation of that value or the list of errors encountered.

loadValueFromFile Source #

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

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

Instances details
Show p => Show (PrimMismatch p) Source # 
Instance details

Defined in Config.Schema.Load.Error

data Problem p Source #

Problems that can be encountered when matching a Value against a ValueSpec.

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

Instances

Instances details
Show p => Show (Problem p) Source # 
Instance details

Defined in Config.Schema.Load.Error

Methods

showsPrec :: Int -> Problem p -> ShowS #

show :: Problem p -> String #

showList :: [Problem p] -> ShowS #