roc/examples/benchmarks/Base64.roc
2021-12-21 17:17:31 -08:00

36 lines
922 B
Plaintext

interface Base64 exposes [ fromBytes, fromStr, toBytes, toStr ] imports [ Base64.Decode, Base64.Encode ]
# base 64 encoding from a sequence of bytes
fromBytes : List U8 -> Result Str [ InvalidInput ]*
fromBytes = \bytes ->
when Base64.Decode.fromBytes bytes is
Ok v ->
Ok v
Err _ ->
Err InvalidInput
# base 64 encoding from a string
fromStr : Str -> Result Str [ InvalidInput ]*
fromStr = \str ->
fromBytes (Str.toUtf8 str)
# base64-encode bytes to the original
toBytes : Str -> Result (List U8) [ InvalidInput ]*
toBytes = \str ->
Ok (Base64.Encode.toBytes str)
toStr : Str -> Result Str [ InvalidInput ]*
toStr = \str ->
when toBytes str is
Ok bytes ->
when Str.fromUtf8 bytes is
Ok v ->
Ok v
Err _ ->
Err InvalidInput
Err _ ->
Err InvalidInput