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 =
renderText . toEDN
decodeText
:: (FromEDN a)
=> String
-> Text
-> Either String a
decodeText sourceName source =
parseText sourceName source >>= fromEDN