Current section

Files

Jump to
gluple src gluple@reflect.erl
Raw

src/gluple@reflect.erl

-module(gluple@reflect).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gluple/reflect.gleam").
-export([is_tuple/1, tuple_to_list/1, list_to_tuple/1, tuple_size/1, tuple_element/2]).
-file("src/gluple/reflect.gleam", 41).
-spec is_tuple(any()) -> boolean().
is_tuple(Maybe_tuple) ->
erlang:is_tuple(Maybe_tuple).
-file("src/gluple/reflect.gleam", 12).
-spec tuple_to_list(any()) -> {ok, list(gleam@dynamic:dynamic_())} |
{error, list(gleam@dynamic@decode:decode_error())}.
tuple_to_list(Tuple) ->
case erlang:is_tuple(Tuple) of
true ->
{ok, erlang:tuple_to_list(Tuple)};
false ->
{error,
[{decode_error,
<<"Tuple"/utf8>>,
gleam@string:inspect(Tuple),
[]}]}
end.
-file("src/gluple/reflect.gleam", 49).
-spec list_to_tuple(list(any())) -> gleam@dynamic:dynamic_().
list_to_tuple(List) ->
erlang:list_to_tuple(List).
-file("src/gluple/reflect.gleam", 5).
-spec tuple_size(any()) -> {ok, integer()} |
{error, list(gleam@dynamic@decode:decode_error())}.
tuple_size(Tuple) ->
case erlang:is_tuple(Tuple) of
true ->
{ok, erlang:tuple_size(Tuple)};
false ->
{error,
[{decode_error,
<<"Tuple"/utf8>>,
gleam@string:inspect(Tuple),
[]}]}
end.
-file("src/gluple/reflect.gleam", 19).
-spec tuple_element(any(), integer()) -> {ok, gleam@dynamic:dynamic_()} |
{error, list(gleam@dynamic@decode:decode_error())}.
tuple_element(Tuple, Index) ->
case erlang:is_tuple(Tuple) of
true ->
Tuple_size = erlang:tuple_size(Tuple),
case (Index >= 0) andalso (Index < Tuple_size) of
true ->
{ok, erlang:element(Index + 1, Tuple)};
false ->
{error,
[{decode_error,
<<"Tuple size "/utf8,
(erlang:integer_to_binary(Tuple_size))/binary>>,
<<"Desired index "/utf8,
(erlang:integer_to_binary(Index))/binary>>,
[]}]}
end;
false ->
{error,
[{decode_error,
<<"Tuple"/utf8>>,
gleam@string:inspect(Tuple),
[]}]}
end.