Current section
Files
Jump to
Current section
Files
src/glitch@extended@dynamic_ext.erl
-module(glitch@extended@dynamic_ext).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([uri/1, decode_bool_field/2, decode_int_field/2, decode_string_field/2, decode_uri_field/2, decode11/12]).
-spec uri(gleam@dynamic:dynamic_()) -> {ok, gleam@uri:uri()} |
{error, list(gleam@dynamic:decode_error())}.
uri(Dyn) ->
gleam@result:'try'(gleam@dynamic:string(Dyn), fun(Str) -> _pipe = Str,
_pipe@1 = gleam@uri:parse(_pipe),
gleam@result:replace_error(
_pipe@1,
[{decode_error, <<"Uri"/utf8>>, <<"String"/utf8>>, []}]
) end).
-spec decode_field(
gleam@dynamic:dynamic_(),
fun((gleam@dynamic:dynamic_()) -> {ok, OZQ} |
{error, list(gleam@dynamic:decode_error())})
) -> {ok, OZQ} | {error, list(gleam@dynamic:decode_error())}.
decode_field(Dyn, Decoder) ->
Decoder(Dyn).
-spec decode_bool_field(gleam@dynamic:dynamic_(), binary()) -> {ok, boolean()} |
{error, list(gleam@dynamic:decode_error())}.
decode_bool_field(Dyn, Field_name) ->
decode_field(Dyn, gleam@dynamic:field(Field_name, fun gleam@dynamic:bool/1)).
-spec decode_int_field(gleam@dynamic:dynamic_(), binary()) -> {ok, integer()} |
{error, list(gleam@dynamic:decode_error())}.
decode_int_field(Dyn, Field_name) ->
decode_field(Dyn, gleam@dynamic:field(Field_name, fun gleam@dynamic:int/1)).
-spec decode_string_field(gleam@dynamic:dynamic_(), binary()) -> {ok, binary()} |
{error, list(gleam@dynamic:decode_error())}.
decode_string_field(Dyn, Field_name) ->
decode_field(
Dyn,
gleam@dynamic:field(Field_name, fun gleam@dynamic:string/1)
).
-spec decode_uri_field(gleam@dynamic:dynamic_(), binary()) -> {ok,
gleam@uri:uri()} |
{error, list(gleam@dynamic:decode_error())}.
decode_uri_field(Dyn, Field_name) ->
gleam@result:'try'(
decode_string_field(Dyn, Field_name),
fun(Str) -> _pipe = Str,
_pipe@1 = gleam@uri:parse(_pipe),
gleam@result:replace_error(
_pipe@1,
[{decode_error, <<"Uri"/utf8>>, <<"String"/utf8>>, [Field_name]}]
) end
).
-spec all_errors({ok, any()} | {error, list(gleam@dynamic:decode_error())}) -> list(gleam@dynamic:decode_error()).
all_errors(Result) ->
case Result of
{ok, _} ->
[];
{error, Errors} ->
Errors
end.
-spec decode11(
fun((PAC, PAD, PAE, PAF, PAG, PAH, PAI, PAJ, PAK, PAL, PAM) -> PAN),
fun((gleam@dynamic:dynamic_()) -> {ok, PAC} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAD} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAE} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAF} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAG} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAH} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAI} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAJ} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAK} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAL} |
{error, list(gleam@dynamic:decode_error())}),
fun((gleam@dynamic:dynamic_()) -> {ok, PAM} |
{error, list(gleam@dynamic:decode_error())})
) -> fun((gleam@dynamic:dynamic_()) -> {ok, PAN} |
{error, list(gleam@dynamic:decode_error())}).
decode11(Constructor, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) ->
fun(X) ->
case {T1(X),
T2(X),
T3(X),
T4(X),
T5(X),
T6(X),
T7(X),
T8(X),
T9(X),
T10(X),
T11(X)} of
{{ok, A},
{ok, B},
{ok, C},
{ok, D},
{ok, E},
{ok, F},
{ok, G},
{ok, H},
{ok, I},
{ok, J},
{ok, K}} ->
{ok, Constructor(A, B, C, D, E, F, G, H, I, J, K)};
{A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1, I@1, J@1, K@1} ->
{error,
gleam@list:concat(
[all_errors(A@1),
all_errors(B@1),
all_errors(C@1),
all_errors(D@1),
all_errors(E@1),
all_errors(F@1),
all_errors(G@1),
all_errors(H@1),
all_errors(I@1),
all_errors(J@1),
all_errors(K@1)]
)}
end
end.