Packages
gleam_stdlib
0.12.0
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
src/gleam/base.gleam
import gleam/bit_string.{BitString}
import gleam/string
external fn erl_encode64(BitString) -> String =
"base64" "encode"
external fn erl_decode64(String) -> Result(BitString, Nil) =
"gleam_stdlib" "base_decode64"
/// Encodes a BitString into a base 64 encoded string.
pub fn encode64(input: BitString, padding: Bool) -> String {
let encoded = erl_encode64(input)
case padding {
True -> encoded
False -> string.replace(encoded, "=", "")
}
}
/// 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
n -> string.append(encoded, string.repeat("=", 4 - n))
}
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("-", "+")
|> string.replace("_", "/")
|> decode64()
}