Current section

Files

Jump to
glitch src glitch@event_sub@subscription.erl
Raw

src/glitch@event_sub@subscription.erl

-module(glitch@event_sub@subscription).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([name_to_string/1, name_from_string/1, version_to_string/1, version_from_string/1]).
-export_type([subscription/0, name/0, invalid_name/0, condition/0, version/0, invalid_version/0]).
-type subscription() :: {subscription, name(), version(), condition()}.
-type name() :: {user, glitch@event_sub@subscription@user:user()}.
-type invalid_name() :: {invalid_user,
glitch@event_sub@subscription@user:invalid_user_subscription()}.
-type condition() :: condition.
-type version() :: {int, integer()} | beta.
-type invalid_version() :: {invalid_version, binary()}.
-spec name_to_string(name()) -> binary().
name_to_string(Name) ->
case Name of
{user, User} ->
glitch@event_sub@subscription@user:to_string(User)
end.
-spec name_from_string(binary()) -> {ok, name()} | {error, invalid_name()}.
name_from_string(Str) ->
_pipe = Str,
_pipe@1 = glitch@event_sub@subscription@user:from_string(_pipe),
_pipe@2 = gleam@result:map(_pipe@1, fun(Field@0) -> {user, Field@0} end),
gleam@result:map_error(_pipe@2, fun(Field@0) -> {invalid_user, Field@0} end).
-spec version_to_string(version()) -> binary().
version_to_string(Version) ->
case Version of
{int, Version@1} ->
gleam@int:to_string(Version@1);
beta ->
<<"beta"/utf8>>
end.
-spec version_from_string(binary()) -> {ok, version()} |
{error, invalid_version()}.
version_from_string(Str) ->
case Str of
<<"beta"/utf8>> ->
{ok, beta};
_ ->
_pipe = Str,
_pipe@1 = gleam@int:parse(_pipe),
_pipe@2 = gleam@result:map(
_pipe@1,
fun(Field@0) -> {int, Field@0} end
),
gleam@result:replace_error(_pipe@2, {invalid_version, Str})
end.