Packages
ex_gram
0.62.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.58.0
0.57.0
0.56.1
0.56.0
0.55.1
0.55.0
0.54.0
0.53.0
0.52.2
0.52.1
0.52.0
0.51.1
0.51.0
0.50.2
0.50.1
0.50.0
0.41.0
0.40.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.1
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
0.5.0-rc6
0.5.0-rc5
0.5.0-rc4
0.5.0-rc3
0.5.0-rc2
Telegram Bot API low level and framework
Current section
Files
Jump to
Current section
Files
lib/ex_gram/inspect/inline_keyboard_markup.ex
defimpl Inspect, for: ExGram.Model.InlineKeyboardMarkup do
import Inspect.Algebra
@action_fields [
{:callback_data, "cb"},
{:url, "url"},
{:web_app, "web_app"},
{:login_url, "login_url"},
{:switch_inline_query, "switch_iq"},
{:switch_inline_query_current_chat, "switch_iq_cc"},
{:switch_inline_query_chosen_chat, "switch_iq_chosen"},
{:copy_text, "copy"},
{:callback_game, "game"},
{:pay, "pay"}
]
def inspect(markup, opts) do
verbose = Keyword.get(opts.custom_options, :verbose, false)
rows = Enum.map_intersperse(markup.inline_keyboard, line(), &render_row(&1, verbose))
inner = concat(rows)
force_unfit(
concat([
"#InlineKeyboardMarkup<",
nest(concat([line(), inner]), 2),
line(),
">"
])
)
end
defp render_row(buttons, verbose) do
row =
buttons
|> Enum.map(&render_button(&1, verbose))
|> concat()
concat(["[ ", row, " ]"])
end
defp render_button(button, verbose) do
action =
Enum.find_value(@action_fields, fn {field, abbrev} ->
value = Map.get(button, field)
if value not in [nil, false] do
{abbrev, value}
end
end)
label =
case action do
nil ->
button.text
{abbrev, _value} when not verbose ->
"#{button.text} (#{abbrev})"
{abbrev, value} when is_binary(value) ->
"#{button.text} (#{abbrev}: #{inspect(value)})"
{abbrev, value} when is_boolean(value) ->
"#{button.text} (#{abbrev}: #{value})"
{abbrev, value} ->
short_name = value |> Map.get(:__struct__) |> Module.split() |> List.last()
"#{button.text} (#{abbrev}: #{short_name})"
end
string("[ #{label} ]")
end
end