Current section
Files
Jump to
Current section
Files
src/telega@models@keyboard.erl
-module(telega@models@keyboard).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([decode_inline_button/1, decode_inline_markup/1]).
-export_type([inline_keyboard_button/0, inline_keyboard_markup/0, keyboard/0]).
-type inline_keyboard_button() :: {inline_keyboard_button,
binary(),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(boolean())}.
-type inline_keyboard_markup() :: {inline_keyboard_markup,
list(list(inline_keyboard_button()))}.
-type keyboard() :: keyboard.
-spec decode_inline_button(gleam@dynamic:dynamic_()) -> {ok,
inline_keyboard_button()} |
{error, list(gleam@dynamic:decode_error())}.
decode_inline_button(Json) ->
_pipe = Json,
(gleam@dynamic:decode6(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5) -> {inline_keyboard_button, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5} end,
gleam@dynamic:field(<<"text"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:optional_field(<<"url"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:optional_field(
<<"callback_data"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"switch_inline_query"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"switch_inline_query_current_chat"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(<<"pay"/utf8>>, fun gleam@dynamic:bool/1)
))(_pipe).
-spec decode_inline_markup(gleam@dynamic:dynamic_()) -> {ok,
inline_keyboard_markup()} |
{error, list(gleam@dynamic:decode_error())}.
decode_inline_markup(Json) ->
_pipe = Json,
(gleam@dynamic:decode1(
fun(Field@0) -> {inline_keyboard_markup, Field@0} end,
gleam@dynamic:field(
<<"inline_keyboard"/utf8>>,
gleam@dynamic:list(gleam@dynamic:list(fun decode_inline_button/1))
)
))(_pipe).