Safe Haskell | None |
---|
- class ToEDN a where
- toEDN :: a -> TaggedValue
- toEDNv :: a -> Value
- class FromEDN a where
- fromEDN :: FromEDN a => TaggedValue -> Result a
- fromEDNv :: FromEDN a => Value -> Result a
- decode :: FromEDN a => ByteString -> Maybe a
- parse :: (a -> Parser b) -> a -> Result b
- parseEither :: (a -> Parser b) -> a -> Either String b
- parseMaybe :: (a -> Parser b) -> a -> Maybe b
- data Parser a
- data Result a
- (.=) :: ToEDN a => ByteString -> a -> Pair
- (.:) :: (Show k, ToEDN k, FromEDN a) => EDNMap -> k -> Parser a
- (.:?) :: (ToEDN k, FromEDN a) => EDNMap -> k -> Parser (Maybe a)
- (.!=) :: Parser (Maybe a) -> a -> Parser a
- typeMismatch :: String -> Value -> Parser a
Type conversion
A type that can be converted to JSON.
ToEDN Bool | |
ToEDN Char | |
ToEDN Double | |
ToEDN Int | |
ToEDN Integer | |
ToEDN () | |
ToEDN ByteString | |
ToEDN ByteString | |
ToEDN Text | |
ToEDN Text | |
ToEDN UTCTime | |
ToEDN Value | |
ToEDN TaggedValue | |
ToEDN [Char] | |
ToEDN a => ToEDN [a] | |
ToEDN a => ToEDN (Maybe a) | |
(Ord a, ToEDN a) => ToEDN (Set a) | |
ToEDN a => ToEDN (Vector a) | |
ToEDN a => ToEDN (Tagged a) | |
(ToEDN a, ToEDN b) => ToEDN (Either a b) | |
(ToEDN a, ToEDN b) => ToEDN (a, b) | |
(ToEDN a, ToEDN b) => ToEDN (Map a b) | |
(ToEDN a, ToEDN b, ToEDN c) => ToEDN (a, b, c) | |
(ToEDN a, ToEDN b, ToEDN c, ToEDN d) => ToEDN (a, b, c, d) | |
(ToEDN a, ToEDN b, ToEDN c, ToEDN d, ToEDN e) => ToEDN (a, b, c, d, e) | |
(ToEDN a, ToEDN b, ToEDN c, ToEDN d, ToEDN e, ToEDN f) => ToEDN (a, b, c, d, e, f) | |
(ToEDN a, ToEDN b, ToEDN c, ToEDN d, ToEDN e, ToEDN f, ToEDN g) => ToEDN (a, b, c, d, e, f, g) | |
(ToEDN a, ToEDN b, ToEDN c, ToEDN d, ToEDN e, ToEDN f, ToEDN g, ToEDN h) => ToEDN (a, b, c, d, e, f, g, h) |
A type that can be converted from EDN, with a possibility of failure.
When writing an instance, use empty
, mzero
, or fail
to make a
conversion fail, e.g. if an Map
is missing a required key, or
the value is of the wrong type.
fromEDN :: FromEDN a => TaggedValue -> Result aSource
Convert a value from TaggedValue
, failing if the types do not match.
fromEDNv :: FromEDN a => Value -> Result aSource
Convert a value from Value
, failing if the types do not match.
EDN value decoding
decode :: FromEDN a => ByteString -> Maybe aSource
Deserializes a EDN value from a lazy ByteString
.
If this fails to to incomplete or invalid input, Nothing
is returned.
parseEither :: (a -> Parser b) -> a -> Either String bSource
A continuation-based parser type.
The result of running a Parser
.
Convenience functions
(.=) :: ToEDN a => ByteString -> a -> PairSource
Construct a Pair
from a key (as EDN keyword) and a value.
(.:) :: (Show k, ToEDN k, FromEDN a) => EDNMap -> k -> Parser aSource
Retrieve the value associated with the given key of an EDNMap
.
The result is empty
if the key is not present or the value cannot
be converted to the desired type.
This accessor is appropriate if the key and value must be present in an object for it to be valid. If the key and value are optional, use '(.:?)' instead.
(.:?) :: (ToEDN k, FromEDN a) => EDNMap -> k -> Parser (Maybe a)Source
Retrieve the value associated with the given key of an EDNMap
.
The result is Nothing
if the key is not present, or empty
if
the value cannot be converted to the desired type.
This accessor is most useful if the key and value can be absent from an object without affecting its validity. If the key and value are mandatory, use '(.:)' instead.
(.!=) :: Parser (Maybe a) -> a -> Parser aSource
Helper for use in combination with .:?
to provide default
values for optional JSON object fields.
This combinator is most useful if the key and value can be absent from an object without affecting its validity and we know a default value to assign in that case. If the key and value are mandatory, use '(.:)' instead.
Example usage:
v1 <- o.:?
"opt_field_with_dfl" .!= "default_val" v2 <- o.:
"mandatory_field" v3 <- o.:?
"opt_field2"