-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.