Packages
gleam_stdlib
0.14.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
gen/src/gleam@base.erl
-module(gleam@base).
-compile(no_auto_import).
-export([encode64/2, decode64/1, url_encode64/2, url_decode64/1]).
-spec encode64(bitstring(), boolean()) -> binary().
encode64(Input, Padding) ->
Encoded = base64:encode(Input),
case Padding of
true ->
Encoded;
false ->
gleam@string:replace(Encoded, <<"="/utf8>>, <<""/utf8>>)
end.
-spec decode64(binary()) -> {ok, bitstring()} | {error, nil}.
decode64(Encoded) ->
Padded = case gleam@bit_string:byte_size(
gleam@bit_string:from_string(Encoded)
)
rem 4 of
0 ->
Encoded;
N ->
gleam@string:append(
Encoded,
gleam@string:repeat(<<"="/utf8>>, 4 - N)
)
end,
gleam_stdlib:base_decode64(Padded).
-spec url_encode64(bitstring(), boolean()) -> binary().
url_encode64(Input, Padding) ->
gleam@string:replace(
gleam@string:replace(
encode64(Input, Padding),
<<"+"/utf8>>,
<<"-"/utf8>>
),
<<"/"/utf8>>,
<<"_"/utf8>>
).
-spec url_decode64(binary()) -> {ok, bitstring()} | {error, nil}.
url_decode64(Encoded) ->
decode64(
gleam@string:replace(
gleam@string:replace(Encoded, <<"-"/utf8>>, <<"+"/utf8>>),
<<"_"/utf8>>,
<<"/"/utf8>>
)
).