Safe Haskell | None |
---|
- data Value
- type TaggedValue = Tagged Value
- data Tagged a
- = NoTag !a
- | Tagged !a !ByteString !ByteString
- class ToEDN a where
- toEDN :: a -> TaggedValue
- class FromEDN a
- fromEDN :: FromEDN a => TaggedValue -> Result a
- fromEDNv :: FromEDN a => Value -> Result a
- (.:) :: (Show k, ToEDN k, FromEDN a) => EDNMap -> k -> Parser a
- (.:?) :: (ToEDN k, FromEDN a) => EDNMap -> k -> Parser (Maybe a)
- setTag :: ByteString -> ByteString -> Tagged a -> Tagged a
- getTag :: TaggedValue -> (ByteString, ByteString)
- stripTag :: Tagged a -> a
- tag :: ByteString -> ByteString -> a -> Tagged a
- notag :: a -> Tagged a
- nil :: TaggedValue
- bool :: Bool -> TaggedValue
- true :: TaggedValue
- false :: TaggedValue
- char :: Char -> TaggedValue
- string :: Text -> TaggedValue
- symbol :: ByteString -> TaggedValue
- symbolNS :: ByteString -> ByteString -> TaggedValue
- keyword :: ByteString -> TaggedValue
- integer :: Integer -> TaggedValue
- floating :: Double -> TaggedValue
- makeList :: [TaggedValue] -> Value
- makeVec :: [TaggedValue] -> Value
- makeSet :: [TaggedValue] -> Value
- makeMap :: [Pair] -> Value
- (.=) :: ByteString -> TaggedValue -> Pair
- encode :: TaggedValue -> ByteString
- fromValue :: Value -> Builder
- fromTagged :: TaggedValue -> Builder
- decode :: ByteString -> Maybe TaggedValue
- parseValue :: Parser Value
- parseTagged :: Parser TaggedValue
- data Result a
Core EDN types
A "raw" EDN value represented as a Haskell value.
type TaggedValue = Tagged ValueSource
Abstract namespaced tag.
NoTag !a | |
Tagged !a !ByteString !ByteString |
Type conversion
toEDN :: a -> TaggedValueSource
ToEDN Bool | |
ToEDN Char | |
ToEDN Double | |
ToEDN Integer | |
ToEDN () | |
ToEDN ByteString | |
ToEDN ByteString | |
ToEDN Text | |
ToEDN Text | |
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 (Map a b) |
FromEDN Bool | |
FromEDN Char | |
FromEDN Double | |
FromEDN Integer | |
FromEDN () | |
FromEDN ByteString | |
FromEDN ByteString | |
FromEDN Text | |
FromEDN Text | |
FromEDN Value | |
FromEDN TaggedValue | |
FromEDN [Char] | |
FromEDN a => FromEDN [a] | |
FromEDN a => FromEDN (Maybe a) | |
(Ord a, FromEDN a) => FromEDN (Set a) | |
FromEDN a => FromEDN (Vector a) | |
FromEDN a => FromEDN (Tagged a) | |
(FromEDN a, FromEDN b) => FromEDN (Either a b) | |
(Ord a, FromEDN a, FromEDN b) => FromEDN (Map a b) |
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.
(.:) :: (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.
Tag manipulation
setTag :: ByteString -> ByteString -> Tagged a -> Tagged aSource
Replace a tag on a Tagged
value.
getTag :: TaggedValue -> (ByteString, ByteString)Source
Extract namespace and tag from a tagged container. Will be a pair of empty
for tagless containers.
Constructors
tag :: ByteString -> ByteString -> a -> Tagged aSource
Attach a namespaced tag to a value.
Basic values
Basic EDN nil.
bool :: Bool -> TaggedValueSource
Basic EDN boolean.
Const EDN True.
Const EDN False.
char :: Char -> TaggedValueSource
Basic EDN character.
string :: Text -> TaggedValueSource
Basic EDN string.
symbol :: ByteString -> TaggedValueSource
"Bare" symbol.
symbolNS :: ByteString -> ByteString -> TaggedValueSource
A namespaced symbol.
keyword :: ByteString -> TaggedValueSource
Basic EDN keyword.
integer :: Integer -> TaggedValueSource
Basic EDN integer.
floating :: Double -> TaggedValueSource
Basic EDN fp number.
Containers
makeList :: [TaggedValue] -> ValueSource
makeVec :: [TaggedValue] -> ValueSource
Create an EDN Vector
from a TaggedValue
list.
makeSet :: [TaggedValue] -> ValueSource
Create an EDN Set
from a TaggedValue
list.
makeMap :: [Pair] -> ValueSource
Create an EDN Map
from a assoc list with untagged keys and tagged values.
(.=) :: ByteString -> TaggedValue -> PairSource
Construct a Pair
from a key (as EDN keyword) and a value.
Encoding
encode :: TaggedValue -> ByteStringSource
Serialize a EDN value as a lazy ByteString
.
fromTagged :: TaggedValue -> BuilderSource
Encode a Tagged EDN value to a Builder
.
Parsing
decode :: ByteString -> Maybe TaggedValueSource
Decode a lazy ByteString
into a TaggedValue
. If fails due to incomplete or invalid input, Nothing
is returned.
parseValue :: Parser ValueSource
Parse a "raw" EDN value into a Value
.
parseTagged :: Parser TaggedValueSource
Parse a probably tagged EDN value into a TaggedValue
.