toml-parser-2.0.0.0: TOML 1.0.0 parser
Copyright(c) Eric Mertens 2023
LicenseISC
Maintaineremertens@gmail.com
Safe HaskellNone
LanguageHaskell2010

Toml.Semantics.Types

Description

This module provides the type for the semantics of a TOML file. All dotted keys are resolved in this representation. Each table is a Map with a single level of keys.

Values are parameterized over an annotation type to allow values to be attributed to a file location. When values are constructed programmatically, there might not be any interesting annotations. In this case a trivial () unit annotation can be used. The Value type-synonym and related pattern synonyms can make using this case more convenient.

Synopsis

Unlocated value synonyms

type Value = Value' () #

A Value' with trivial annotations

type Table = Table' () #

A Table' with trivial annotations

Annotated values

data Value' a #

Semantic TOML value with all table assignments resolved.

Bundled Patterns

pattern Integer :: Integer -> Value 
pattern Double :: Double -> Value 
pattern Text :: Text -> Value 
pattern Bool :: Bool -> Value 
pattern ZonedTime :: ZonedTime -> Value 
pattern Day :: Day -> Value 
pattern LocalTime :: LocalTime -> Value 
pattern TimeOfDay :: TimeOfDay -> Value 
pattern List :: [Value] -> Value 
pattern Table :: Table -> Value 

Instances

Instances details
Foldable Value' #

Derived

Instance details

Defined in Toml.Semantics.Types

Methods

fold :: Monoid m => Value' m -> m #

foldMap :: Monoid m => (a -> m) -> Value' a -> m #

foldMap' :: Monoid m => (a -> m) -> Value' a -> m #

foldr :: (a -> b -> b) -> b -> Value' a -> b #

foldr' :: (a -> b -> b) -> b -> Value' a -> b #

foldl :: (b -> a -> b) -> b -> Value' a -> b #

foldl' :: (b -> a -> b) -> b -> Value' a -> b #

foldr1 :: (a -> a -> a) -> Value' a -> a #

foldl1 :: (a -> a -> a) -> Value' a -> a #

toList :: Value' a -> [a] #

null :: Value' a -> Bool #

length :: Value' a -> Int #

elem :: Eq a => a -> Value' a -> Bool #

maximum :: Ord a => Value' a -> a #

minimum :: Ord a => Value' a -> a #

sum :: Num a => Value' a -> a #

product :: Num a => Value' a -> a #

Traversable Value' #

Derived

Instance details

Defined in Toml.Semantics.Types

Methods

traverse :: Applicative f => (a -> f b) -> Value' a -> f (Value' b) #

sequenceA :: Applicative f => Value' (f a) -> f (Value' a) #

mapM :: Monad m => (a -> m b) -> Value' a -> m (Value' b) #

sequence :: Monad m => Value' (m a) -> m (Value' a) #

Functor Value' #

Derived

Instance details

Defined in Toml.Semantics.Types

Methods

fmap :: (a -> b) -> Value' a -> Value' b #

(<$) :: a -> Value' b -> Value' a #

FromValue Value #

Matches all values, used for pass-through

Instance details

Defined in Toml.Schema.FromValue

ToValue Value #

Identity function

Instance details

Defined in Toml.Schema.ToValue

Methods

toValue :: Value -> Value #

toValueList :: [Value] -> Value #

() ~ a => IsString (Value' a) #

Constructs a TOML string literal.

fromString = String
Instance details

Defined in Toml.Semantics.Types

Methods

fromString :: String -> Value' a #

Read a => Read (Value' a) #

Default instance

Instance details

Defined in Toml.Semantics.Types

Show a => Show (Value' a) #

Default instance

Instance details

Defined in Toml.Semantics.Types

Methods

showsPrec :: Int -> Value' a -> ShowS #

show :: Value' a -> String #

showList :: [Value' a] -> ShowS #

Eq a => Eq (Value' a) #

Nearly default instance except ZonedTime doesn't have an Eq instance. ZonedTime values are equal if their times and time-zones are both equal.

Instance details

Defined in Toml.Semantics.Types

Methods

(==) :: Value' a -> Value' a -> Bool #

(/=) :: Value' a -> Value' a -> Bool #

newtype Table' a #

A table with annotated keys and values.

Constructors

MkTable (Map Text (a, Value' a)) 

Instances

Instances details
Foldable Table' #

Derived

Instance details

Defined in Toml.Semantics.Types

Methods

fold :: Monoid m => Table' m -> m #

foldMap :: Monoid m => (a -> m) -> Table' a -> m #

foldMap' :: Monoid m => (a -> m) -> Table' a -> m #

foldr :: (a -> b -> b) -> b -> Table' a -> b #

foldr' :: (a -> b -> b) -> b -> Table' a -> b #

foldl :: (b -> a -> b) -> b -> Table' a -> b #

foldl' :: (b -> a -> b) -> b -> Table' a -> b #

foldr1 :: (a -> a -> a) -> Table' a -> a #

foldl1 :: (a -> a -> a) -> Table' a -> a #

toList :: Table' a -> [a] #

null :: Table' a -> Bool #

length :: Table' a -> Int #

elem :: Eq a => a -> Table' a -> Bool #

maximum :: Ord a => Table' a -> a #

minimum :: Ord a => Table' a -> a #

sum :: Num a => Table' a -> a #

product :: Num a => Table' a -> a #

Traversable Table' #

Derived

Instance details

Defined in Toml.Semantics.Types

Methods

traverse :: Applicative f => (a -> f b) -> Table' a -> f (Table' b) #

sequenceA :: Applicative f => Table' (f a) -> f (Table' a) #

mapM :: Monad m => (a -> m b) -> Table' a -> m (Table' b) #

sequence :: Monad m => Table' (m a) -> m (Table' a) #

Functor Table' #

Derived

Instance details

Defined in Toml.Semantics.Types

Methods

fmap :: (a -> b) -> Table' a -> Table' b #

(<$) :: a -> Table' b -> Table' a #

FromValue Table # 
Instance details

Defined in Toml.Schema.FromValue

Read a => Read (Table' a) #

Default instance

Instance details

Defined in Toml.Semantics.Types

Show a => Show (Table' a) #

Default instance

Instance details

Defined in Toml.Semantics.Types

Methods

showsPrec :: Int -> Table' a -> ShowS #

show :: Table' a -> String #

showList :: [Table' a] -> ShowS #

Eq a => Eq (Table' a) #

Default instance

Instance details

Defined in Toml.Semantics.Types

Methods

(==) :: Table' a -> Table' a -> Bool #

(/=) :: Table' a -> Table' a -> Bool #

ToTable (Table' a) # 
Instance details

Defined in Toml.Schema.ToValue

Methods

toTable :: Table' a -> Table #

ToValue (Table' a) # 
Instance details

Defined in Toml.Schema.ToValue

Methods

toValue :: Table' a -> Value #

toValueList :: [Table' a] -> Value #

Utilities

forgetValueAnns :: Value' a -> Value #

Replaces annotations with a unit.

forgetTableAnns :: Table' a -> Table #

Replaces annotations with a unit.

valueAnn :: Value' a -> a #

Extract the top-level annotation from a value.

valueType :: Value' l -> String #

String representation of the kind of value using TOML vocabulary