Current section

Files

Jump to
bravo src bravo@object.erl
Raw

src/bravo@object.erl

-module(bravo@object).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/1, extract/1, size/1, element/2]).
-export_type([object/1]).
-opaque object(GDZ) :: {object, GDZ}.
-spec new(GEA) -> object(GEA).
new(Tuple) ->
{object, Tuple}.
-spec extract(object(any())) -> gleam@dynamic:dynamic_().
extract(Object) ->
gleam@dynamic:from(erlang:element(2, Object)).
-spec size(object(any())) -> integer().
size(Object) ->
erlang:tuple_size(erlang:element(2, Object)).
-spec element(object(any()), integer()) -> gleam@option:option(gleam@dynamic:dynamic_()).
element(Object, Index) ->
case (Index =< size(Object)) orelse (Index >= 1) of
true ->
{some, gleam@dynamic:from(erlang:element(Index, Object))};
false ->
none
end.