Current section
Files
Jump to
Current section
Files
src/shimmer@internal@map_helpers.erl
-module(shimmer@internal@map_helpers).
-compile(no_auto_import).
-export([dyn_atom/1, dyn_key/1, get_map_field_safe/2, get_field_safe/3]).
-spec dyn_atom(binary()) -> gleam@dynamic:dynamic().
dyn_atom(Val) ->
gleam@dynamic:from(erlang:binary_to_atom(Val)).
-spec dyn_key(binary()) -> gleam@dynamic:dynamic().
dyn_key(Val) ->
gleam@dynamic:from(Val).
-spec get_map_field_safe(gleam@map:map_(HMV, gleam@dynamic:dynamic()), HMV) -> {ok,
gleam@map:map_(gleam@dynamic:dynamic(), gleam@dynamic:dynamic())} |
{error, shimmer@internal@error:shimmer_error()}.
get_map_field_safe(Map, Key) ->
case begin
_pipe = Map,
_pipe@1 = gleam@map:get(_pipe, Key),
gleam@result:map_error(
_pipe@1,
fun(Field@0) -> {nil_map_entry, Field@0} end
)
end of
{error, _try} -> {error, _try};
{ok, Dyn} ->
case begin
_pipe@2 = Dyn,
_pipe@3 = (gleam@dynamic:map(
fun gleam@dynamic:dynamic/1,
fun gleam@dynamic:dynamic/1
))(_pipe@2),
gleam@result:map_error(
_pipe@3,
fun(Field@0) -> {invalid_dynamic_list, Field@0} end
)
end of
{error, _try@1} -> {error, _try@1};
{ok, Safe} ->
{ok, Safe}
end
end.
-spec get_field_safe(
gleam@map:map_(HNC, gleam@dynamic:dynamic()),
HNC,
fun((gleam@dynamic:dynamic()) -> {ok, HNF} |
{error, list(gleam@dynamic:decode_error())})
) -> {ok, HNF} | {error, shimmer@internal@error:shimmer_error()}.
get_field_safe(Map, Key, Decoder) ->
case begin
_pipe = Map,
_pipe@1 = gleam@map:get(_pipe, Key),
gleam@result:map_error(
_pipe@1,
fun(Field@0) -> {nil_map_entry, Field@0} end
)
end of
{error, _try} -> {error, _try};
{ok, Dyn} ->
case begin
_pipe@2 = Dyn,
_pipe@3 = Decoder(_pipe@2),
gleam@result:map_error(
_pipe@3,
fun(Field@0) -> {invalid_dynamic_list, Field@0} end
)
end of
{error, _try@1} -> {error, _try@1};
{ok, Safe} ->
{ok, Safe}
end
end.