toml-parser-2.0.0.0: TOML 1.0.0 parser

Copyright | (c) Eric Mertens 2023
License | ISC
Maintainer | emertens@gmail.com
Safe Haskell | None
Language | Haskell2010

Toml.Semantics.Types

Contents

- Unlocated value synonyms
- Annotated values
- Utilities

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

- type Value = Value' ()
- type Table = Table' ()
- data Value' a where
  - Integer' a Integer
  - Double' a Double
  - List' a [Value' a]
  - Table' a (Table' a)
  - Bool' a Bool
  - Text' a Text
  - TimeOfDay' a TimeOfDay
  - ZonedTime' a ZonedTime
  - LocalTime' a LocalTime
  - Day' a Day
  - 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
- newtype Table' a = MkTable (Map Text (a, Value' a))
- forgetValueAnns :: Value' a -> Value
- forgetTableAnns :: Table' a -> Table
- valueAnn :: Value' a -> a
- valueType :: Value' l -> String

# 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.

Constructors

Integer' a Integer |
Double' a Double |
List' a [Value' a] |
Table' a (Table' a) |
Bool' a Bool |
Text' a Text |
TimeOfDay' a TimeOfDay |
ZonedTime' a ZonedTime |
LocalTime' a LocalTime |
Day' a Day |

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 Methods fromValue :: Value' l -> Matcher l Value # listFromValue :: Value' l -> Matcher l [Value] #
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 Methods readsPrec :: Int -> ReadS (Value' a) # readList :: ReadS [Value' a] # readPrec :: ReadPrec (Value' a) # readListPrec :: ReadPrec [Value' a] #
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 Methods fromValue :: Value' l -> Matcher l Table # listFromValue :: Value' l -> Matcher l [Table] #
Read a => Read (Table' a) # | Default instance
Instance details Defined in Toml.Semantics.Types Methods readsPrec :: Int -> ReadS (Table' a) # readList :: ReadS [Table' a] # readPrec :: ReadPrec (Table' a) # readListPrec :: ReadPrec [Table' a] #
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