Current section
Files
Jump to
Current section
Files
src/ids@uuid.erl
-module(ids@uuid).
-compile(no_auto_import).
-export([v4/0]).
-spec v4() -> {ok, binary()} | {error, nil}.
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>>,
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))>>,
gleam@bit_string:to_string(Id).
-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.