Current section

Files

Jump to
ids src ids@uuid.erl
Raw

src/ids@uuid.erl

-module(ids@uuid).
-compile(no_auto_import).
-export([generate_v4/0]).
-spec generate_v4() -> {ok, binary()} | {error, binary()}.
generate_v4() ->
<<U0:48, _@1:4, U1:12, _@2:2, U2:62>> = crypto:strong_rand_bytes(16),
<<A1:4,
A2:4,
A3:4,
A4:4,
A5:4,
A6:4,
A7:4,
A8:4,
B1:4,
B2:4,
B3:4,
B4:4,
C1:4,
C2:4,
C3:4,
C4:4,
D1:4,
D2:4,
D3:4,
D4:4,
E1:4,
E2:4,
E3:4,
E4:4,
E5:4,
E6:4,
E7:4,
E8:4,
E9:4,
E10:4,
E11:4,
E12:4>> = <<U0:48, 4:4, U1:12, 2:2, U2:62>>,
Bitstr_id = <<(e(A1)),
(e(A2)),
(e(A3)),
(e(A4)),
(e(A5)),
(e(A6)),
(e(A7)),
(e(A8)),
45,
(e(B1)),
(e(B2)),
(e(B3)),
(e(B4)),
45,
(e(C1)),
(e(C2)),
(e(C3)),
(e(C4)),
45,
(e(D1)),
(e(D2)),
(e(D3)),
(e(D4)),
45,
(e(E1)),
(e(E2)),
(e(E3)),
(e(E4)),
(e(E5)),
(e(E6)),
(e(E7)),
(e(E8)),
(e(E9)),
(e(E10)),
(e(E11)),
(e(E12))>>,
case gleam@bit_string:to_string(Bitstr_id) of
{ok, Str_id} ->
_pipe = Str_id,
{ok, _pipe};
{error, _@3} ->
Error = <<"Error: BitString could not be converted to String."/utf8>>,
_pipe@1 = Error,
{error, _pipe@1}
end.
-spec e(integer()) -> integer().
e(N) ->
case N of
0 ->
48;
1 ->
49;
2 ->
50;
3 ->
51;
4 ->
52;
5 ->
53;
6 ->
54;
7 ->
55;
8 ->
56;
9 ->
57;
10 ->
97;
11 ->
98;
12 ->
99;
13 ->
100;
14 ->
101;
15 ->
102
end.