Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- decodeText :: FromEDN a => String -> Text -> Either String a
- encodeText :: ToEDN a => a -> Text
- parseText :: String -> Text -> Either String TaggedValue
- renderText :: TaggedValue -> Text
- type TaggedValue = Tagged Text Value
- data Tagged tag a
- stripTag :: Tagged tag a -> a
- data Value
- type EDNList = [TaggedValue]
- type EDNVec = Vector TaggedValue
- type EDNMap = Map TaggedValue TaggedValue
- type EDNSet = Set TaggedValue
- mkList :: Foldable f => f TaggedValue -> Value
- mkVec :: Foldable f => f TaggedValue -> Value
- mkMap :: Foldable f => f (TaggedValue, TaggedValue) -> Value
- mkSet :: Foldable f => f TaggedValue -> Value
- class ToEDN a where
- toEDN :: a -> TaggedValue
- toEDNv :: a -> Value
- toEDNtagged :: ToEDN a => Text -> Text -> a -> TaggedValue
- class FromEDN a where
- fromEDN :: FromEDN a => TaggedValue -> Either String a
- withTagged :: Text -> Text -> (Value -> Parser a) -> TaggedValue -> Parser a
- withNoTag :: (Value -> Parser a) -> TaggedValue -> Parser a
- withNil :: Parser a -> Value -> Parser a
- withBoolean :: (Bool -> Parser a) -> Value -> Parser a
- withString :: (Text -> Parser a) -> Value -> Parser a
- withCharacter :: (Char -> 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
- withFloating :: (Double -> 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
- vecGet :: FromEDN a => Int -> EDNVec -> Parser a
- mapGetKeyword :: FromEDN a => Text -> EDNMap -> Parser a
- mapGetString :: FromEDN a => Text -> EDNMap -> Parser a
- mapGetSymbol :: FromEDN a => Text -> EDNMap -> Parser a
- mapGetSymbolNS :: FromEDN a => Text -> Text -> EDNMap -> Parser a
Documentation
:: FromEDN a | |
=> String | Source name, for megaparsec error reports
e.g. |
-> Text | EDN document body |
-> Either String a |
Decode EDN document into AST and parse value using its FromEDN
instance.
EDN AST
renderText :: TaggedValue -> Text Source #
Render EDN document to Text
Instances
FromEDN TaggedValue Source # | |
Defined in Data.EDN.Class parseEDN :: TaggedValue -> Parser TaggedValue Source # | |
ToEDN TaggedValue Source # | |
Defined in Data.EDN.Class toEDN :: TaggedValue -> TaggedValue Source # toEDNv :: TaggedValue -> Value Source # | |
Functor (Tagged tag) Source # | |
(Eq tag, Eq a) => Eq (Tagged tag a) Source # | |
(Data tag, Data a) => Data (Tagged tag a) Source # | |
Defined in Data.EDN.AST.Types.Tagged gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Tagged tag a -> c (Tagged tag a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Tagged tag a) # toConstr :: Tagged tag a -> Constr # dataTypeOf :: Tagged tag a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Tagged tag a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Tagged tag a)) # gmapT :: (forall b. Data b => b -> b) -> Tagged tag a -> Tagged tag a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Tagged tag a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Tagged tag a -> r # gmapQ :: (forall d. Data d => d -> u) -> Tagged tag a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Tagged tag a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Tagged tag a -> m (Tagged tag a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Tagged tag a -> m (Tagged tag a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Tagged tag a -> m (Tagged tag a) # | |
(Ord tag, Ord a) => Ord (Tagged tag a) Source # | |
Defined in Data.EDN.AST.Types.Tagged | |
(Show tag, Show a) => Show (Tagged tag a) Source # | |
Data a => Lift (Tagged Text a) Source # | |
Nil | nil |
Boolean !Bool | true | false |
String !Text | "a string" |
Character !Char | c |
Symbol !Text !Text | a-prefix/a-symbol |
Keyword !Text | :a-keyword |
Integer !Int | 42 |
Floating !Double | 3.14 |
List !EDNList | (a list) |
Vec !EDNVec | [a vector] |
Map !EDNMap | {:a map} |
Set !EDNSet | #{a set} |
Instances
Eq Value Source # | |
Data Value Source # | |
Defined in Data.EDN.AST.Types.Value gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Value -> c Value # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Value # dataTypeOf :: Value -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Value) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Value) # gmapT :: (forall b. Data b => b -> b) -> Value -> Value # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Value -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Value -> r # gmapQ :: (forall d. Data d => d -> u) -> Value -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Value -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Value -> m Value # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Value -> m Value # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Value -> m Value # | |
Ord Value Source # | |
Show Value Source # | |
Lift Value Source # | |
FromEDN Value Source # | |
FromEDN TaggedValue Source # | |
Defined in Data.EDN.Class parseEDN :: TaggedValue -> Parser TaggedValue Source # | |
ToEDN Value Source # | |
ToEDN TaggedValue Source # | |
Defined in Data.EDN.Class toEDN :: TaggedValue -> TaggedValue Source # toEDNv :: TaggedValue -> Value Source # |
type EDNList = [TaggedValue] Source #
type EDNVec = Vector TaggedValue Source #
type EDNMap = Map TaggedValue TaggedValue Source #
type EDNSet = Set TaggedValue Source #
mkMap :: Foldable f => f (TaggedValue, TaggedValue) -> Value Source #
Encoding to EDN AST
A type that can be converted to EDN AST.
Instances
ToEDN Bool Source # | |
ToEDN Char Source # | |
ToEDN Double Source # | |
ToEDN Int Source # | |
ToEDN () Source # | |
Defined in Data.EDN.Class | |
ToEDN Void Source # | |
ToEDN Text Source # | |
ToEDN Text Source # | |
ToEDN UTCTime Source # | |
ToEDN UUID Source # | |
ToEDN Value Source # | |
ToEDN TaggedValue Source # | |
Defined in Data.EDN.Class toEDN :: TaggedValue -> TaggedValue Source # toEDNv :: TaggedValue -> Value Source # | |
ToEDN a => ToEDN [a] Source # | |
Defined in Data.EDN.Class | |
ToEDN a => ToEDN (Maybe a) Source # | |
ToEDN a => ToEDN (Set a) Source # | |
ToEDN a => ToEDN (Vector a) Source # | |
(ToEDN a, ToEDN b) => ToEDN (a, b) Source # | |
Defined in Data.EDN.Class | |
(ToEDN k, ToEDN v) => ToEDN (Map k v) Source # | |
(ToEDN a, ToEDN b, ToEDN c) => ToEDN (a, b, c) Source # | |
Defined in Data.EDN.Class | |
(ToEDN a, ToEDN b, ToEDN c, ToEDN d) => ToEDN (a, b, c, d) Source # | |
Defined in Data.EDN.Class |
toEDNtagged :: ToEDN a => Text -> Text -> a -> TaggedValue Source #
Decoding EDN AST
class FromEDN a where Source #
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.
Instances
FromEDN Bool Source # | |
FromEDN Char Source # | |
FromEDN Double Source # | |
FromEDN Int Source # | |
FromEDN () Source # | |
FromEDN Void Source # | |
FromEDN Text Source # | |
FromEDN Text Source # | |
FromEDN UTCTime Source # | |
FromEDN UUID Source # | |
FromEDN Value Source # | |
FromEDN TaggedValue Source # | |
Defined in Data.EDN.Class parseEDN :: TaggedValue -> Parser TaggedValue Source # | |
FromEDN a => FromEDN [a] Source # | |
FromEDN a => FromEDN (Maybe a) Source # | |
(FromEDN a, Ord a) => FromEDN (Set a) Source # | |
FromEDN a => FromEDN (Vector a) Source # | |
(FromEDN a, FromEDN b) => FromEDN (a, b) Source # | |
(FromEDN k, FromEDN v, Ord k) => FromEDN (Map k v) Source # | |
(FromEDN a, FromEDN b, FromEDN c) => FromEDN (a, b, c) Source # | |
(FromEDN a, FromEDN b, FromEDN c, FromEDN d) => FromEDN (a, b, c, d) Source # | |
fromEDN :: FromEDN a => TaggedValue -> Either String a Source #
Apply appropriate parsers for a value to decode AST.
AST-parsing wrappers
withTagged :: Text -> Text -> (Value -> Parser a) -> TaggedValue -> Parser a Source #
withFractional :: Fractional f => (f -> Parser a) -> Value -> Parser a Source #
unexpected :: Value -> Label -> Parser a Source #
Report an decoding error due to unexpected AST node given.
The Parser
combines and reports alternatives expected.
Additional helpers
Get ix-th element of EDNVec
or fail with appropriate message.