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

Config.Schema.Load.Error

Description

This module provides a complete skeleton of the failures that occurred when trying to match a Value against a ValueSpec allowing custom error rendering to be implemented.

The structure is you get a single value and a list of one-or-more primitive specifications that it failed to match along with an enumeration of why that specification failed to match. Some failures are due to failures in nested specifications, so the whole error structure can form a tree.

Synopsis

Error types

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 #

class (Typeable a, Show a) => ErrorAnnotation a where Source #

Class for rendering position annotations within the prettyValueSpecMismatch

Methods

displayAnnotation :: a -> Doc Source #

Instances

Instances details
ErrorAnnotation () Source #

Renders as an empty document

Instance details

Defined in Config.Schema.Load.Error

Methods

displayAnnotation :: () -> Doc Source #

ErrorAnnotation Position Source #

Renders a Position as line:column:

Instance details

Defined in Config.Schema.Load.Error

Detailed rendering

prettyValueSpecMismatch :: ErrorAnnotation p => ValueSpecMismatch p -> Doc Source #

Pretty-printer for ValueSpecMismatch showing the position and type of value that failed to match along with details about each specification that it didn't match.

prettyPrimMismatch :: ErrorAnnotation p => PrimMismatch p -> Doc Source #

Pretty-printer for PrimMismatch showing a summary of the primitive specification that didn't match followed by a more detailed error when appropriate.

prettyProblem Source #

Arguments

:: ErrorAnnotation p 
=> Problem p 
-> (Doc, Doc)

summary, detailed

Pretty-printer for Problem that generates a summary line as well as a detailed description (depending on the error)

Summaries

describeSpec :: PrimValueSpec a -> Text Source #

Describe outermost shape of a PrimValueSpec

describeValue :: Value p -> Text Source #

Describe outermost shape of a Value