packages feed

project-m36-0.9.4: src/lib/ProjectM36/DataTypes/ByteString.hs

module ProjectM36.DataTypes.ByteString where
import ProjectM36.Base
import ProjectM36.AtomFunctionError
import ProjectM36.AtomFunctionBody
import qualified Data.HashSet as HS
import qualified Data.ByteString.Base64 as B64
import qualified Data.Text.Encoding as TE

bytestringAtomFunctions :: AtomFunctions
bytestringAtomFunctions = HS.fromList [
  Function { funcName = "bytestring",
             funcType = [TextAtomType, ByteStringAtomType],
             funcBody = compiledAtomFunctionBody $ \(TextAtom textIn:_) -> case B64.decode (TE.encodeUtf8 textIn) of
                   Left err -> Left (AtomFunctionBytesDecodingError err)
                   Right bs -> pure (ByteStringAtom bs) 
               }
  ]