Current section

Files

Jump to
telega src telega@keyboard.erl
Raw

src/telega@keyboard.erl

-module(telega@keyboard).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/1, hear/1, build/1, one_time/1, persistent/1, resized/1, placeholder/2, selected/1, button/1, new_inline/1, build_inline/1, inline_button/2, filter_inline_keyboard_query/1, new_callback_data/3, set_callback_data_delimiter/2, pack_callback/2, unpack_callback/2]).
-export_type([keyboard/0, inline_keyboard/0, keyboard_callback_data/1, keyboard_callback/1]).
-opaque keyboard() :: {keyboard,
list(list(telega@model:keyboard_button())),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(binary()),
gleam@option:option(boolean())}.
-opaque inline_keyboard() :: {inline_keyboard,
list(list(telega@model:inline_keyboard_button()))}.
-opaque keyboard_callback_data(WXL) :: {keyboard_callback_data,
binary(),
fun((WXL) -> binary()),
fun((binary()) -> WXL),
binary()}.
-type keyboard_callback(WXM) :: {keyboard_callback,
WXM,
binary(),
binary(),
keyboard_callback_data(WXM)}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 31).
-spec new(list(list(telega@model:keyboard_button()))) -> keyboard().
new(Buttons) ->
{keyboard, Buttons, none, none, none, none, none}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 42).
-spec hear(keyboard()) -> telega@bot:hears().
hear(Keyboard) ->
_pipe = erlang:element(2, Keyboard),
_pipe@1 = gleam@list:flat_map(
_pipe,
fun(Row) ->
gleam@list:map(Row, fun(Button) -> erlang:element(2, Button) end)
end
),
{hear_texts, _pipe@1}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 49).
-spec build(keyboard()) -> telega@model:reply_markup().
build(Keyboard) ->
{reply_keyboard_markup,
erlang:element(2, Keyboard),
erlang:element(3, Keyboard),
erlang:element(4, Keyboard),
erlang:element(5, Keyboard),
erlang:element(6, Keyboard),
erlang:element(7, Keyboard)}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 61).
-spec one_time(keyboard()) -> keyboard().
one_time(Keyboard) ->
_record = Keyboard,
{keyboard,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
{some, true},
erlang:element(6, _record),
erlang:element(7, _record)}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 66).
-spec persistent(keyboard()) -> keyboard().
persistent(Keyboard) ->
_record = Keyboard,
{keyboard,
erlang:element(2, _record),
{some, true},
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record)}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 71).
-spec resized(keyboard()) -> keyboard().
resized(Keyboard) ->
_record = Keyboard,
{keyboard,
erlang:element(2, _record),
erlang:element(3, _record),
{some, true},
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record)}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 76).
-spec placeholder(keyboard(), binary()) -> keyboard().
placeholder(Keyboard, Text) ->
_record = Keyboard,
{keyboard,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
{some, Text},
erlang:element(7, _record)}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 82).
-spec selected(keyboard()) -> keyboard().
selected(Keyboard) ->
_record = Keyboard,
{keyboard,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
{some, true}}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 87).
-spec button(binary()) -> telega@model:keyboard_button().
button(Text) ->
{keyboard_button, Text, none, none, none, none, none, none}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 106).
-spec new_inline(list(list(telega@model:inline_keyboard_button()))) -> inline_keyboard().
new_inline(Buttons) ->
{inline_keyboard, Buttons}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 111).
-spec build_inline(inline_keyboard()) -> telega@model:reply_markup().
build_inline(Keyboard) ->
{reply_inline_keyboard_markup, erlang:element(2, Keyboard)}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 116).
-spec inline_button(binary(), keyboard_callback(any())) -> telega@model:inline_keyboard_button().
inline_button(Text, Callback_data) ->
{inline_keyboard_button,
Text,
none,
{some, erlang:element(4, Callback_data)},
none,
none,
none,
none,
none,
none}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 133).
-spec filter_inline_keyboard_query(inline_keyboard()) -> telega@bot:callback_query_filter().
filter_inline_keyboard_query(Keyboard) ->
Options = begin
_pipe = erlang:element(2, Keyboard),
_pipe@1 = gleam@list:flat_map(
_pipe,
fun(Row) ->
gleam@list:map(
Row,
fun(Button) -> erlang:element(4, Button) end
)
end
),
_pipe@2 = gleam@option:values(_pipe@1),
gleam@string:join(_pipe@2, <<"|"/utf8>>)
end,
_assert_subject = gleam@regexp:from_string(
<<<<"^("/utf8, Options/binary>>/binary, ")$"/utf8>>
),
{ok, Re} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
value => _assert_fail,
module => <<"telega/keyboard"/utf8>>,
function => <<"filter_inline_keyboard_query"/utf8>>,
line => 144})
end,
{callback_query_filter, Re}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 170).
-spec new_callback_data(
binary(),
fun((WXT) -> binary()),
fun((binary()) -> WXT)
) -> keyboard_callback_data(WXT).
new_callback_data(Id, Serilize, Deserialize) ->
{keyboard_callback_data, Id, Serilize, Deserialize, <<":"/utf8>>}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 179).
-spec set_callback_data_delimiter(keyboard_callback_data(WXV), binary()) -> keyboard_callback_data(WXV).
set_callback_data_delimiter(Data, Delimiter) ->
_record = Data,
{keyboard_callback_data,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
Delimiter}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 187).
-spec pack_callback(keyboard_callback_data(WXY), WXY) -> keyboard_callback(WXY).
pack_callback(Callback_data, Data) ->
Payload = <<<<(erlang:element(2, Callback_data))/binary,
(erlang:element(5, Callback_data))/binary>>/binary,
((erlang:element(3, Callback_data))(Data))/binary>>,
{keyboard_callback,
Data,
erlang:element(2, Callback_data),
Payload,
Callback_data}.
-file("/Users/bondiano/workspace/telega-gleam/src/telega/keyboard.gleam", 198).
-spec unpack_callback(binary(), keyboard_callback_data(WYB)) -> {ok,
keyboard_callback(WYB)} |
{error, nil}.
unpack_callback(Payload, Callback_data) ->
gleam@result:'try'(
gleam@string:split_once(Payload, erlang:element(5, Callback_data)),
fun(_use0) ->
{Id, Data} = _use0,
{ok,
{keyboard_callback,
(erlang:element(4, Callback_data))(Data),
Id,
Payload,
Callback_data}}
end
).