on fc5d986 help sign in
18 lines 743 B history raw
1module ProjectM36.DataTypes.ByteString where
2import ProjectM36.Base
3import ProjectM36.AtomFunctionError
4import ProjectM36.AtomFunctionBody
5import qualified Data.HashSet as HS
6import qualified Data.ByteString.Base64 as B64
7import qualified Data.Text.Encoding as TE
9bytestringAtomFunctions :: AtomFunctions
10bytestringAtomFunctions = HS.fromList [
11 AtomFunction { atomFuncName = "bytestring",
12 atomFuncType = [TextAtomType, ByteStringAtomType],
13 atomFuncBody = compiledAtomFunctionBody $ \(TextAtom textIn:_) -> case B64.decode (TE.encodeUtf8 textIn) of
14 Left err -> Left (AtomFunctionBytesDecodingError err)
15 Right bs -> pure (ByteStringAtom bs)
16 }
17 ]