-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.