Current section

Files

Jump to
sprocket src sprocket@internal@utils@unique.erl
Raw

src/sprocket@internal@utils@unique.erl

-module(sprocket@internal@utils@unique).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/sprocket/internal/utils/unique.gleam").
-export([cuid/1, slug/2, from_string/1, to_string/1, equals/2]).
-export_type([unique/1]).
-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).
-opaque unique(FZE) :: {unique, binary()} | {gleam_phantom, FZE}.
-file("src/sprocket/internal/utils/unique.gleam", 8).
?DOC(false).
-spec cuid(gleam@erlang@process:subject(sprocket@internal@utils@cuid:message())) -> unique(any()).
cuid(Channel) ->
Id = sprocket@internal@utils@cuid:generate(Channel),
{unique, Id}.
-file("src/sprocket/internal/utils/unique.gleam", 14).
?DOC(false).
-spec slug(
gleam@erlang@process:subject(sprocket@internal@utils@cuid:message()),
binary()
) -> unique(any()).
slug(Channel, Label) ->
Id = <<<<Label/binary, "-"/utf8>>/binary,
(sprocket@internal@utils@cuid:slug(Channel))/binary>>,
{unique, Id}.
-file("src/sprocket/internal/utils/unique.gleam", 20).
?DOC(false).
-spec from_string(binary()) -> unique(any()).
from_string(Str) ->
{unique, Str}.
-file("src/sprocket/internal/utils/unique.gleam", 24).
?DOC(false).
-spec to_string(unique(any())) -> binary().
to_string(Unique) ->
erlang:element(2, Unique).
-file("src/sprocket/internal/utils/unique.gleam", 28).
?DOC(false).
-spec equals(unique(FZP), unique(FZP)) -> boolean().
equals(A, B) ->
erlang:element(2, A) =:= erlang:element(2, B).