diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/base.gleam | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gleam/base.gleam b/src/gleam/base.gleam index 0b88734..b3a4651 100644 --- a/src/gleam/base.gleam +++ b/src/gleam/base.gleam @@ -7,6 +7,7 @@ external fn erl_encode64(BitString) -> String = external fn erl_decode64(String) -> Result(BitString, Nil) = "gleam_stdlib" "base_decoded4" +/// Encodes a BitString into a base 64 encoded string. pub fn encode64(input: BitString, padding: Bool) -> String { let encoded = erl_encode64(input) case padding { @@ -15,6 +16,7 @@ pub fn encode64(input: BitString, padding: Bool) -> String { } } +/// Decodes a base 64 encoded string into a BitString. pub fn decode64(encoded: String) -> Result(BitString, Nil) { let padded = case bit_string.byte_size(bit_string.from_string(encoded)) % 4 { 0 -> encoded @@ -23,12 +25,14 @@ pub fn decode64(encoded: String) -> Result(BitString, Nil) { erl_decode64(padded) } +/// Encodes a BitString into a base 64 encoded string with URL and filename safe alphabet. pub fn url_encode64(input: BitString, padding: Bool) -> String { encode64(input, padding) |> string.replace("+", "-") |> string.replace("/", "_") } +/// Decodes a base 64 encoded string with URL and filename safe alphabet into a BitString. pub fn url_decode64(encoded: String) -> Result(BitString, Nil) { encoded |> string.replace("-", "+") |