hedn-0.1.6.0: EDN parsing and encoding

Safe HaskellNone

Data.EDN.Types.Class

Contents

Synopsis

Type conversion

class ToEDN a whereSource

A type that can be converted to JSON.

Instances

class FromEDN a whereSource

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.

parse :: (a -> Parser b) -> a -> Result bSource

Run a Parser.

parseEither :: (a -> Parser b) -> a -> Either String bSource

Run a Parser with an Either result type.

parseMaybe :: (a -> Parser b) -> a -> Maybe bSource

Run a Parser with a Maybe result type.

data Parser a Source

A continuation-based parser type.

data Result a Source

The result of running a Parser.

Constructors

Error String 
Success a 

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"

typeMismatchSource

Arguments

:: String

The name of the type you are trying to parse.

-> Value

The actual value encountered.

-> Parser a 

Fail parsing due to a type mismatch, with a descriptive message.