-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 = <<<<<>/binary, C/binary>>/binary, D/binary>>, format_uuid(Concatened).