Current section
Files
Jump to
Current section
Files
src/glecuid@internals@util.erl
-module(glecuid@internals@util).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/glecuid/internals/util.gleam").
-export([bit_array_to_base36/1, bump_or_initialize_counter/1, get_global_object/0, random_int/2, create_entropy/2, random_letter/1, create_fingerprint/2]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-file("src/glecuid/internals/util.gleam", 24).
?DOC(false).
-spec bit_array_to_int_loop(integer(), bitstring()) -> integer().
bit_array_to_int_loop(Accumulator, Bit_array) ->
case Bit_array of
<<>> ->
Accumulator;
<<X:1>> ->
_pipe = Accumulator,
_pipe@1 = erlang:'bsl'(_pipe, 8),
gleam@int:add(_pipe@1, X);
<<X:2>> ->
_pipe = Accumulator,
_pipe@1 = erlang:'bsl'(_pipe, 8),
gleam@int:add(_pipe@1, X);
<<X:3>> ->
_pipe = Accumulator,
_pipe@1 = erlang:'bsl'(_pipe, 8),
gleam@int:add(_pipe@1, X);
<<X:4>> ->
_pipe = Accumulator,
_pipe@1 = erlang:'bsl'(_pipe, 8),
gleam@int:add(_pipe@1, X);
<<X:5>> ->
_pipe = Accumulator,
_pipe@1 = erlang:'bsl'(_pipe, 8),
gleam@int:add(_pipe@1, X);
<<X:6>> ->
_pipe = Accumulator,
_pipe@1 = erlang:'bsl'(_pipe, 8),
gleam@int:add(_pipe@1, X);
<<X:7>> ->
_pipe = Accumulator,
_pipe@1 = erlang:'bsl'(_pipe, 8),
gleam@int:add(_pipe@1, X);
<<X:8>> ->
_pipe = Accumulator,
_pipe@1 = erlang:'bsl'(_pipe, 8),
gleam@int:add(_pipe@1, X);
<<X@1, Rest/bitstring>> ->
_pipe@2 = Accumulator,
_pipe@3 = erlang:'bsl'(_pipe@2, 8),
_pipe@4 = gleam@int:add(_pipe@3, X@1),
bit_array_to_int_loop(_pipe@4, Rest);
_ ->
Accumulator
end.
-file("src/glecuid/internals/util.gleam", 20).
?DOC(false).
-spec bit_array_to_int(bitstring()) -> integer().
bit_array_to_int(Bit_array) ->
bit_array_to_int_loop(0, Bit_array).
-file("src/glecuid/internals/util.gleam", 12).
?DOC(false).
-spec bit_array_to_base36(bitstring()) -> binary().
bit_array_to_base36(Bit_array) ->
_pipe = Bit_array,
_pipe@1 = bit_array_to_int(_pipe),
gleam@int:to_base36(_pipe@1).
-file("src/glecuid/internals/util.gleam", 60).
?DOC(false).
-spec bump_or_initialize_counter(integer()) -> integer().
bump_or_initialize_counter(Initial_count) ->
glecuid_ffi:bump_or_initialize_counter(Initial_count).
-file("src/glecuid/internals/util.gleam", 98).
?DOC(false).
-spec get_global_object() -> binary().
get_global_object() ->
_pipe = erlang:self(),
gleam@string:inspect(_pipe).
-file("src/glecuid/internals/util.gleam", 106).
?DOC(false).
-spec random_int(fun(() -> float()), integer()) -> integer().
random_int(Randomizer, Max) ->
_pipe = (Randomizer() * erlang:float(Max)),
_pipe@1 = math:floor(_pipe),
erlang:round(_pipe@1).
-file("src/glecuid/internals/util.gleam", 69).
?DOC(false).
-spec create_entropy_loop(binary(), integer(), fun(() -> float()), integer()) -> binary().
create_entropy_loop(Accumulator, Iteration, Randomizer, Length) ->
gleam@bool:guard(
Iteration >= Length,
Accumulator,
fun() ->
_pipe@1 = (<<Accumulator/binary,
(begin
_pipe = random_int(Randomizer, 36),
gleam@int:to_base36(_pipe)
end)/binary>>),
create_entropy_loop(_pipe@1, Iteration + 1, Randomizer, Length)
end
).
-file("src/glecuid/internals/util.gleam", 65).
?DOC(false).
-spec create_entropy(fun(() -> float()), integer()) -> binary().
create_entropy(Randomizer, Length) ->
create_entropy_loop(<<""/utf8>>, 0, Randomizer, Length).
-file("src/glecuid/internals/util.gleam", 115).
?DOC(false).
-spec random_letter(fun(() -> float())) -> binary().
random_letter(Randomizer) ->
C@1 = case begin
_pipe = random_int(Randomizer, 26),
_pipe@1 = gleam@int:add(_pipe, 97),
gleam@string:utf_codepoint(_pipe@1)
end of
{ok, C} -> C;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"glecuid/internals/util"/utf8>>,
function => <<"random_letter"/utf8>>,
line => 116,
value => _assert_fail,
start => 3174,
'end' => 3272,
pattern_start => 3185,
pattern_end => 3190})
end,
gleam_stdlib:utf_codepoint_list_to_string([C@1]).
-file("src/glecuid/internals/util.gleam", 82).
?DOC(false).
-spec create_fingerprint(fun(() -> float()), fun((binary()) -> binary())) -> binary().
create_fingerprint(Randomizer, Hasher) ->
<<(get_global_object())/binary,
(begin
_pipe = create_entropy(Randomizer, 32),
_pipe@1 = Hasher(_pipe),
gleam@string:slice(_pipe@1, 0, 32)
end)/binary>>.