hedn-0.2.0.1: EDN parsing and encoding

Safe HaskellNone
LanguageHaskell2010

Data.EDN.Class

Synopsis

Documentation

class ToEDN a where #

A type that can be converted to EDN AST.

Minimal complete definition

toEDN | toEDNv

Methods

toEDN :: a -> TaggedValue #

toEDNv :: a -> Value #

Instances
ToEDN Bool # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Bool -> TaggedValue #

toEDNv :: Bool -> Value #

ToEDN Char # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Char -> TaggedValue #

toEDNv :: Char -> Value #

ToEDN Double # 
Instance details

Defined in Data.EDN.Class

ToEDN Int # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Int -> TaggedValue #

toEDNv :: Int -> Value #

ToEDN () # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: () -> TaggedValue #

toEDNv :: () -> Value #

ToEDN Void # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Void -> TaggedValue #

toEDNv :: Void -> Value #

ToEDN Text # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Text -> TaggedValue #

toEDNv :: Text -> Value #

ToEDN Text # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Text -> TaggedValue #

toEDNv :: Text -> Value #

ToEDN UTCTime # 
Instance details

Defined in Data.EDN.Class

ToEDN UUID # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: UUID -> TaggedValue #

toEDNv :: UUID -> Value #

ToEDN Value # 
Instance details

Defined in Data.EDN.Class

ToEDN TaggedValue # 
Instance details

Defined in Data.EDN.Class

ToEDN a => ToEDN [a] # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: [a] -> TaggedValue #

toEDNv :: [a] -> Value #

ToEDN a => ToEDN (Maybe a) # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Maybe a -> TaggedValue #

toEDNv :: Maybe a -> Value #

ToEDN a => ToEDN (Set a) # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Set a -> TaggedValue #

toEDNv :: Set a -> Value #

ToEDN a => ToEDN (Vector a) # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Vector a -> TaggedValue #

toEDNv :: Vector a -> Value #

(ToEDN a, ToEDN b) => ToEDN (a, b) # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: (a, b) -> TaggedValue #

toEDNv :: (a, b) -> Value #

(ToEDN k, ToEDN v) => ToEDN (Map k v) # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: Map k v -> TaggedValue #

toEDNv :: Map k v -> Value #

(ToEDN a, ToEDN b, ToEDN c) => ToEDN (a, b, c) # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: (a, b, c) -> TaggedValue #

toEDNv :: (a, b, c) -> Value #

(ToEDN a, ToEDN b, ToEDN c, ToEDN d) => ToEDN (a, b, c, d) # 
Instance details

Defined in Data.EDN.Class

Methods

toEDN :: (a, b, c, d) -> TaggedValue #

toEDNv :: (a, b, c, d) -> Value #

toEDNtagged :: ToEDN a => Text -> Text -> a -> TaggedValue #

class FromEDN a where #

A type that can be converted from EDN, with a possibility of failure.

When writing an instance, use unexpected 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.

Minimal complete definition

parseEDN | parseEDNv

Instances
FromEDN Bool # 
Instance details

Defined in Data.EDN.Class

FromEDN Char # 
Instance details

Defined in Data.EDN.Class

FromEDN Double # 
Instance details

Defined in Data.EDN.Class

FromEDN Int # 
Instance details

Defined in Data.EDN.Class

FromEDN () # 
Instance details

Defined in Data.EDN.Class

FromEDN Void # 
Instance details

Defined in Data.EDN.Class

FromEDN Text # 
Instance details

Defined in Data.EDN.Class

FromEDN Text # 
Instance details

Defined in Data.EDN.Class

FromEDN UTCTime # 
Instance details

Defined in Data.EDN.Class

FromEDN UUID # 
Instance details

Defined in Data.EDN.Class

FromEDN Value # 
Instance details

Defined in Data.EDN.Class

FromEDN TaggedValue # 
Instance details

Defined in Data.EDN.Class

FromEDN a => FromEDN [a] # 
Instance details

Defined in Data.EDN.Class

Methods

parseEDN :: TaggedValue -> Parser [a] #

parseEDNv :: Value -> Parser [a] #

FromEDN a => FromEDN (Maybe a) # 
Instance details

Defined in Data.EDN.Class

(FromEDN a, Ord a) => FromEDN (Set a) # 
Instance details

Defined in Data.EDN.Class

FromEDN a => FromEDN (Vector a) # 
Instance details

Defined in Data.EDN.Class

(FromEDN a, FromEDN b) => FromEDN (a, b) # 
Instance details

Defined in Data.EDN.Class

Methods

parseEDN :: TaggedValue -> Parser (a, b) #

parseEDNv :: Value -> Parser (a, b) #

(FromEDN k, FromEDN v, Ord k) => FromEDN (Map k v) # 
Instance details

Defined in Data.EDN.Class

Methods

parseEDN :: TaggedValue -> Parser (Map k v) #

parseEDNv :: Value -> Parser (Map k v) #

(FromEDN a, FromEDN b, FromEDN c) => FromEDN (a, b, c) # 
Instance details

Defined in Data.EDN.Class

Methods

parseEDN :: TaggedValue -> Parser (a, b, c) #

parseEDNv :: Value -> Parser (a, b, c) #

(FromEDN a, FromEDN b, FromEDN c, FromEDN d) => FromEDN (a, b, c, d) # 
Instance details

Defined in Data.EDN.Class

Methods

parseEDN :: TaggedValue -> Parser (a, b, c, d) #

parseEDNv :: Value -> Parser (a, b, c, d) #

fromEDN :: (FromEDN a, Monad m) => TaggedValue -> m a #

Apply appropriate parsers for a value to decode AST.

withNil :: Parser a -> Value -> Parser a #

withBoolean :: (Bool -> Parser a) -> Value -> Parser a #

withString :: (Text -> Parser a) -> Value -> Parser a #

withSymbol :: (Text -> Text -> Parser a) -> Value -> Parser a #

withKeyword :: (Text -> Parser a) -> Value -> Parser a #

withTextual :: (Text -> Parser a) -> Value -> Parser a #

withInteger :: (Int -> Parser a) -> Value -> Parser a #

withIntegral :: Integral i => (i -> Parser a) -> Value -> Parser a #

withFractional :: Fractional f => (f -> Parser a) -> Value -> Parser a #

withList :: (EDNList -> Parser a) -> Value -> Parser a #

withVec :: (EDNVec -> Parser a) -> Value -> Parser a #

withMap :: (EDNMap -> Parser a) -> Value -> Parser a #

withSet :: (EDNSet -> Parser a) -> Value -> Parser a #

unexpected :: Value -> Label -> Parser a #

Report an decoding error due to unexpected AST node given. The Parser combines and reports alternatives expected.

type Expected = [Label] #

Megaparsec-style collection of elements expected by combined parser alternatives.

type Label = String #

Single element expected by a parser. String because MonadFail method.

vecGet #

Arguments

:: FromEDN a 
=> Int

Element index

-> EDNVec

Vector of EDN values

-> Parser a 

Get ix-th element of EDNVec or fail with appropriate message.

mapGetP #

Arguments

:: Monad m 
=> TaggedValue

Map key

-> (TaggedValue -> m a)

Parser to apply to a value

-> EDNMap

Map with EDN keys and values

-> m a 

Get a value from EDNMap and apply a parser to it

mapGetKeyword :: FromEDN a => Text -> EDNMap -> Parser a #

Get a value from EDNMap for a Keyword key.

mapGetString :: FromEDN a => Text -> EDNMap -> Parser a #

Get a value from EDNMap for a String key.

mapGetSymbol :: FromEDN a => Text -> EDNMap -> Parser a #

Get a value from EDNMap for a Symbol (empty namespace) key.

mapGetSymbolNS #

Arguments

:: FromEDN a 
=> Text

Symbol namespace

-> Text

Symbol name

-> EDNMap 
-> Parser a 

Get a value from EDNMap for a Symbol (empty namespace) key.