Current section

Files

Jump to
gluid src gluid.erl
Raw

src/gluid.erl

-module(gluid).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([guidv4/0]).
-file("src/gluid.gleam", 4).
-spec split_to_chunks(binary(), integer()) -> list(binary()).
split_to_chunks(Src, Chunk_size) ->
case string:length(Src) of
Len when Len >= Chunk_size ->
Head = gleam@string:slice(Src, 0, Chunk_size),
Tail = gleam@string:slice(Src, Chunk_size, Len - Chunk_size),
[Head | split_to_chunks(Tail, Chunk_size)];
_ ->
[]
end.
-file("src/gluid.gleam", 16).
-spec format_uuid(binary()) -> binary().
format_uuid(Src) ->
<<<<<<<<<<<<<<<<(gleam@string:slice(Src, 0, 8))/binary, "-"/utf8>>/binary,
(gleam@string:slice(Src, 8, 4))/binary>>/binary,
"-"/utf8>>/binary,
(gleam@string:slice(Src, 12, 4))/binary>>/binary,
"-"/utf8>>/binary,
(gleam@string:slice(Src, 16, 4))/binary>>/binary,
"-"/utf8>>/binary,
(gleam@string:slice(Src, 20, 12))/binary>>.
-file("src/gluid.gleam", 28).
-spec guidv4() -> binary().
guidv4() ->
A = begin
_pipe = gleam@int:random(16#FFFFFFFF),
_pipe@1 = gleam@int:to_base16(_pipe),
gleam@string:pad_start(_pipe@1, 8, <<"0"/utf8>>)
end,
B = begin
_pipe@2 = gleam@int:random(16#FFFFFFFF),
_pipe@3 = erlang:'band'(_pipe@2, 16#FFFF0FFF),
_pipe@4 = erlang:'bor'(_pipe@3, 16#00004000),
_pipe@5 = gleam@int:to_base16(_pipe@4),
gleam@string:pad_start(_pipe@5, 8, <<"0"/utf8>>)
end,
C = begin
_pipe@6 = gleam@int:random(16#FFFFFFFF),
_pipe@7 = erlang:'band'(_pipe@6, 16#3FFFFFFF),
_pipe@8 = erlang:'bor'(_pipe@7, 16#80000000),
_pipe@9 = gleam@int:to_base16(_pipe@8),
gleam@string:pad_start(_pipe@9, 8, <<"0"/utf8>>)
end,
D = begin
_pipe@10 = gleam@int:random(16#FFFFFFFF),
_pipe@11 = gleam@int:to_base16(_pipe@10),
gleam@string:pad_start(_pipe@11, 8, <<"0"/utf8>>)
end,
Concatened = <<<<<<A/binary, B/binary>>/binary, C/binary>>/binary,
D/binary>>,
format_uuid(Concatened).