Current section
Files
Jump to
Current section
Files
src/kitazith@flag.erl
-module(kitazith@flag).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/kitazith/flag.gleam").
-export([to_int/1, from_int/1]).
-export_type([message_flag/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type message_flag() :: crossposted |
is_crosspost |
suppress_embeds |
source_message_deleted |
urgent |
has_thread |
ephemeral |
loading |
failed_to_mention_some_roles_in_thread |
suppress_notifications |
is_voice_message |
has_snapshot |
is_components_v2.
-file("src/kitazith/flag.gleam", 70).
-spec message_flag_bit(message_flag()) -> integer().
message_flag_bit(Message_flag) ->
case Message_flag of
crossposted ->
erlang:'bsl'(1, 0);
is_crosspost ->
erlang:'bsl'(1, 1);
suppress_embeds ->
erlang:'bsl'(1, 2);
source_message_deleted ->
erlang:'bsl'(1, 3);
urgent ->
erlang:'bsl'(1, 4);
has_thread ->
erlang:'bsl'(1, 5);
ephemeral ->
erlang:'bsl'(1, 6);
loading ->
erlang:'bsl'(1, 7);
failed_to_mention_some_roles_in_thread ->
erlang:'bsl'(1, 8);
suppress_notifications ->
erlang:'bsl'(1, 12);
is_voice_message ->
erlang:'bsl'(1, 13);
has_snapshot ->
erlang:'bsl'(1, 14);
is_components_v2 ->
erlang:'bsl'(1, 15)
end.
-file("src/kitazith/flag.gleam", 26).
?DOC(
" Encode the supported message flags into a Discord message flag bitfield.\n"
"\n"
" Learn more:\n"
" [Message Resource - Documentation - Discord > Message Object > Message Flags](https://docs.discord.com/developers/resources/message#message-object-message-flags)\n"
).
-spec to_int(list(message_flag())) -> integer().
to_int(Message_flags) ->
_pipe = Message_flags,
_pipe@1 = gleam@list:map(_pipe, fun message_flag_bit/1),
gleam@list:fold(_pipe@1, 0, fun erlang:'bor'/2).
-file("src/kitazith/flag.gleam", 52).
-spec supported_message_flags() -> list(message_flag()).
supported_message_flags() ->
[crossposted,
is_crosspost,
suppress_embeds,
source_message_deleted,
urgent,
has_thread,
ephemeral,
loading,
failed_to_mention_some_roles_in_thread,
suppress_notifications,
is_voice_message,
has_snapshot,
is_components_v2].
-file("src/kitazith/flag.gleam", 38).
?DOC(
" Decode a Discord message flag bitfield into the supported message flags.\n"
"\n"
" Unknown bits are ignored.\n"
"\n"
" Learn more:\n"
" [Message Resource - Documentation - Discord > Message Object > Message Flags](https://docs.discord.com/developers/resources/message#message-object-message-flags)\n"
).
-spec from_int(integer()) -> list(message_flag()).
from_int(Bits) ->
_pipe = supported_message_flags(),
gleam@list:filter_map(
_pipe,
fun(Message_flag) ->
case erlang:'band'(Bits, message_flag_bit(Message_flag)) =:= 0 of
true ->
{error, nil};
false ->
{ok, Message_flag}
end
end
).