module Data.EDN
( decodeText
, encodeText
, parseText
, renderText
, TaggedValue
, Tagged(..)
, stripTag
, Value(..)
, EDNList, EDNVec, EDNMap, EDNSet
, mkList, mkVec, mkMap, mkSet
, ToEDN(..)
, toEDNtagged
, FromEDN(..)
, fromEDN
, withTagged
, withNoTag
, withNil
, withBoolean
, withString
, withCharacter
, withSymbol
, withKeyword
, withTextual
, withInteger
, withIntegral
, withFloating
, withFractional
, withList
, withVec
, withMap
, withSet
, unexpected
, vecGet
, mapGetKeyword
, mapGetString
, mapGetSymbol
, mapGetSymbolNS
) where
import Data.Text (Text)
import Data.EDN.AST.Parser (parseText)
import Data.EDN.AST.Printer (renderText)
import Data.EDN.AST.Types.Tagged
import Data.EDN.AST.Types.Value
import Data.EDN.Class
encodeText :: ToEDN a => a -> Text
encodeText :: a -> Text
encodeText =
TaggedValue -> Text
renderText (TaggedValue -> Text) -> (a -> TaggedValue) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> TaggedValue
forall a. ToEDN a => a -> TaggedValue
toEDN
decodeText
:: (FromEDN a)
=> String
-> Text
-> Either String a
decodeText :: String -> Text -> Either String a
decodeText String
sourceName Text
source =
String -> Text -> Either String TaggedValue
parseText String
sourceName Text
source Either String TaggedValue
-> (TaggedValue -> Either String a) -> Either String a
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TaggedValue -> Either String a
forall a. FromEDN a => TaggedValue -> Either String a
fromEDN