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