cfg-0.0.2.2: Type directed application configuration parsing and accessors
Copyright© Jonathan Lorimer 2023
LicenseMIT
Maintainerjonathanlorimer@pm.me
Stabilitystable
Safe HaskellNone
LanguageHaskell2010

Cfg.Parser

Description

This module contains the type classes for parsing a configuration type from a source, as well as instances for most basic Haskell types. One important interaction to note is that we use a default instance for ConfigParser that dispatches to a ValueParser instances. This is how we distinguish between a "parser" that just navigates the tree representation of our configuration and a parser that actually converts from text to our Haskell type.

Since: 0.0.2.0

Synopsis

Parser Typeclasses

class ConfigParser a where Source #

This is the instance that allows us to parse a result from our configuration source after we have retrieved it.

Since: 0.0.2.0

Minimal complete definition

Nothing

Methods

parseConfig :: KeyTree Text Text -> Either ConfigParseError a Source #

Takes in the tree representation of our configuration and parses out our Haskell type

The default instance allows us to wrap a ValueParser in a ConfigParser, this allows us to use a uniform typeclass for parsing, but at the same time distinguish between traversing the key structure and actually parsing the textual value.

Instances

Instances details
ConfigParser Int16 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Int32 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Int64 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Int8 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Word16 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Word32 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Word64 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Word8 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser ByteString Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser ByteString Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Text Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Text Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Integer Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser () Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Bool Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Char Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Double Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Float Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Int Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ConfigParser Word Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser a => ConfigParser (NonEmpty a) Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

(AssertTopLevelRecord ConfigParser a, Generic a, GConfigParser (Rep a)) => ConfigParser (Config a) Source #

Since: 0.0.2.0

Instance details

Defined in Cfg.Deriving.Config

(Generic a, GValueParser (Rep a)) => ConfigParser (Value a) Source #

Since: 0.0.2.0

Instance details

Defined in Cfg.Deriving.Value

ValueParser a => ConfigParser (Maybe a) Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser a => ConfigParser [a] Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

(ValueParser a, ValueParser b) => ConfigParser (a, b) Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

(GetConfigOptions t, AssertTopLevelRecord (ConfigSource :: Type -> Constraint) a, Generic a, GConfigParser (Rep a)) => ConfigParser (ConfigOpts t a) Source #

Since: 0.0.2.0

Instance details

Defined in Cfg.Deriving.Config

(ConfigRootOptions r f, AssertTopLevelRecord ConfigParser a, Generic a, GConfigParser (Rep a)) => ConfigParser (ConfigRoot r f a) Source #

Since: 0.0.2.0

Instance details

Defined in Cfg.Deriving.Config

class ValueParser a where Source #

This is a text parser that we use to parse the eventual values we get from a configuration.

Since: 0.0.2.0

Methods

parser :: Parser a Source #

Instances

Instances details
ValueParser Int16 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Int32 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Int64 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Int8 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Word16 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Word32 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Word64 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Word8 Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser ByteString Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser ByteString Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Text Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Text Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Integer Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser () Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

Methods

parser :: Parser () Source #

ValueParser Bool Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Char Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Double Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Float Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Int Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser Word Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

ValueParser a => ValueParser (NonEmpty a) Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

Methods

parser :: Parser (NonEmpty a) Source #

(Generic a, GValueParser (Rep a)) => ValueParser (Value a) Source #

Since: 0.0.2.0

Instance details

Defined in Cfg.Deriving.Value

Methods

parser :: Parser (Value a) Source #

ValueParser a => ValueParser [a] Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

Methods

parser :: Parser [a] Source #

(ValueParser a, ValueParser b) => ValueParser (a, b) Source #

Since: 0.0.1.0

Instance details

Defined in Cfg.Parser

Methods

parser :: Parser (a, b) Source #

Parser Types

type Parser = Parsec Void Text Source #

Type alias for our megaparsec parser

Since: 0.0.1.0

data ConfigParseError Source #

Type errors we can encounter when parsing

Since: 0.0.2.0

Constructors

MissingKey

We encountered a Map that was missing a key.

Fields

  • Text

    The record field name that was missing.

  • (KeyTree Text Text)

    The subtree that was missing an entry.

ExpectedKeyFoundValue

Expected to find a subtree aka a Free with a map in it, but instead we found a Pure.

Fields

  • Text

    The key that was missing

  • Text

    The value that was found

ExpectedValueFoundForest

Expected to find a Pure with a value but instead found a subtree

Fields

ValueParseError

Ran a parser and was unable to parse value

Fields

  • Text

    The parser error

Instances

Instances details
Generic ConfigParseError Source # 
Instance details

Defined in Cfg.Parser

Show ConfigParseError Source # 
Instance details

Defined in Cfg.Parser

Eq ConfigParseError Source # 
Instance details

Defined in Cfg.Parser

type Rep ConfigParseError Source # 
Instance details

Defined in Cfg.Parser