Packages
gleam_stdlib
0.15.0
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
gen/src/gleam@dynamic.erl
-module(gleam@dynamic).
-compile(no_auto_import).
-export([from/1, unsafe_coerce/1, bit_string/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/1, result/1, typed_result/3, typed_list/2, option/2, field/2, element/2, tuple2/1, typed_tuple2/3, tuple3/1, typed_tuple3/4, tuple4/1, typed_tuple4/5, tuple5/1, typed_tuple5/6, tuple6/1, typed_tuple6/7, map/1, any/2]).
-export_type([dynamic/0]).
-type dynamic() :: any().
-spec from(any()) -> dynamic().
from(A) ->
gleam_stdlib:identity(A).
-spec unsafe_coerce(dynamic()) -> any().
unsafe_coerce(A) ->
gleam_stdlib:identity(A).
-spec bit_string(dynamic()) -> {ok, bitstring()} | {error, binary()}.
bit_string(A) ->
gleam_stdlib:decode_bit_string(A).
-spec string(dynamic()) -> {ok, binary()} | {error, binary()}.
string(From) ->
gleam@result:then(
gleam_stdlib:decode_bit_string(From),
fun(Raw) -> case gleam@bit_string:to_string(Raw) of
{ok, String} ->
{ok, String};
{error, nil} ->
{error, <<"Expected a string, got a bit_string"/utf8>>}
end end
).
-spec int(dynamic()) -> {ok, integer()} | {error, binary()}.
int(A) ->
gleam_stdlib:decode_int(A).
-spec float(dynamic()) -> {ok, float()} | {error, binary()}.
float(A) ->
gleam_stdlib:decode_float(A).
-spec atom(dynamic()) -> {ok, gleam@atom:atom_()} | {error, binary()}.
atom(A) ->
gleam_stdlib:decode_atom(A).
-spec bool(dynamic()) -> {ok, boolean()} | {error, binary()}.
bool(A) ->
gleam_stdlib:decode_bool(A).
-spec thunk(dynamic()) -> {ok, fun(() -> dynamic())} | {error, binary()}.
thunk(A) ->
gleam_stdlib:decode_thunk(A).
-spec list(dynamic()) -> {ok, list(dynamic())} | {error, binary()}.
list(A) ->
gleam_stdlib:decode_list(A).
-spec result(dynamic()) -> {ok, {ok, dynamic()} | {error, dynamic()}} |
{error, binary()}.
result(From) ->
case gleam_stdlib:decode_tuple2(From) of
{error, Gleam@try_error} -> {error, Gleam@try_error};
{ok, {Key, Val}} ->
case gleam_stdlib:decode_atom(Key) of
{error, Gleam@try_error@1} -> {error, Gleam@try_error@1};
{ok, Tag} ->
Ok_atom = gleam@atom:create_from_string(<<"ok"/utf8>>),
Error_atom = gleam@atom:create_from_string(<<"error"/utf8>>),
case Tag of
Tag@1 when Tag@1 =:= Ok_atom ->
{ok, {ok, Val}};
Tag@2 when Tag@2 =:= Error_atom ->
{ok, {error, Val}};
Tag@3 ->
{error,
gleam@string_builder:to_string(
gleam@string_builder:append(
gleam@string_builder:append(
gleam@string_builder:from_string(
<<"Expected a tag of \"ok\" or \"error\", got \""/utf8>>
),
gleam@atom:to_string(Tag@3)
),
<<"\""/utf8>>
)
)}
end
end
end.
-spec typed_result(
dynamic(),
fun((dynamic()) -> {ok, EQU} | {error, binary()}),
fun((dynamic()) -> {ok, EQW} | {error, binary()})
) -> {ok, {ok, EQU} | {error, EQW}} | {error, binary()}.
typed_result(Dynamic, Decode_ok, Decode_error) ->
case result(Dynamic) of
{error, Gleam@try_error} -> {error, Gleam@try_error};
{ok, Inner_result} ->
case Inner_result of
{ok, Raw} ->
gleam@result:map(Decode_ok(Raw), fun(A) -> {ok, A} end);
{error, Raw@1} ->
gleam@result:map(
Decode_error(Raw@1),
fun(A) -> {error, A} end
)
end
end.
-spec typed_list(dynamic(), fun((dynamic()) -> {ok, ERC} | {error, binary()})) -> {ok,
list(ERC)} |
{error, binary()}.
typed_list(Dynamic, Decoder_type) ->
gleam@result:then(
gleam_stdlib:decode_list(Dynamic),
fun(Gleam@capture_variable) ->
gleam@list:try_map(Gleam@capture_variable, Decoder_type)
end
).
-spec option(dynamic(), fun((dynamic()) -> {ok, ERI} | {error, binary()})) -> {ok,
gleam@option:option(ERI)} |
{error, binary()}.
option(Dynamic, Decoder) ->
{ok, Null} = gleam@atom:from_string(<<"null"/utf8>>),
case {gleam_stdlib:decode_atom(Dynamic), Decoder(Dynamic)} of
{{ok, Atom}, _} when Atom =:= Null ->
{ok, none};
{_, {ok, Result}} ->
{ok, {some, Result}};
{_, {error, Msg}} ->
{error, Msg}
end.
-spec field(dynamic(), any()) -> {ok, dynamic()} | {error, binary()}.
field(A, B) ->
gleam_stdlib:decode_field(A, B).
-spec element(dynamic(), integer()) -> {ok, dynamic()} | {error, binary()}.
element(A, B) ->
gleam_stdlib:decode_element(A, B).
-spec tuple2(dynamic()) -> {ok, {dynamic(), dynamic()}} | {error, binary()}.
tuple2(A) ->
gleam_stdlib:decode_tuple2(A).
-spec typed_tuple2(
dynamic(),
fun((dynamic()) -> {ok, ERU} | {error, binary()}),
fun((dynamic()) -> {ok, ERW} | {error, binary()})
) -> {ok, {ERU, ERW}} | {error, binary()}.
typed_tuple2(Tup, Decode_first, Decode_second) ->
case gleam_stdlib:decode_tuple2(Tup) of
{error, Gleam@try_error} -> {error, Gleam@try_error};
{ok, {First, Second}} ->
case Decode_first(First) of
{error, Gleam@try_error@1} -> {error, Gleam@try_error@1};
{ok, A} ->
case Decode_second(Second) of
{error, Gleam@try_error@2} -> {error, Gleam@try_error@2};
{ok, B} ->
{ok, {A, B}}
end
end
end.
-spec tuple3(dynamic()) -> {ok, {dynamic(), dynamic(), dynamic()}} |
{error, binary()}.
tuple3(A) ->
gleam_stdlib:decode_tuple3(A).
-spec typed_tuple3(
dynamic(),
fun((dynamic()) -> {ok, ESC} | {error, binary()}),
fun((dynamic()) -> {ok, ESE} | {error, binary()}),
fun((dynamic()) -> {ok, ESG} | {error, binary()})
) -> {ok, {ESC, ESE, ESG}} | {error, binary()}.
typed_tuple3(Tup, Decode_first, Decode_second, Decode_third) ->
case gleam_stdlib:decode_tuple3(Tup) of
{error, Gleam@try_error} -> {error, Gleam@try_error};
{ok, {First, Second, Third}} ->
case Decode_first(First) of
{error, Gleam@try_error@1} -> {error, Gleam@try_error@1};
{ok, A} ->
case Decode_second(Second) of
{error, Gleam@try_error@2} -> {error, Gleam@try_error@2};
{ok, B} ->
case Decode_third(Third) of
{error, Gleam@try_error@3} -> {error, Gleam@try_error@3};
{ok, C} ->
{ok, {A, B, C}}
end
end
end
end.
-spec tuple4(dynamic()) -> {ok, {dynamic(), dynamic(), dynamic(), dynamic()}} |
{error, binary()}.
tuple4(A) ->
gleam_stdlib:decode_tuple4(A).
-spec typed_tuple4(
dynamic(),
fun((dynamic()) -> {ok, ESM} | {error, binary()}),
fun((dynamic()) -> {ok, ESO} | {error, binary()}),
fun((dynamic()) -> {ok, ESQ} | {error, binary()}),
fun((dynamic()) -> {ok, ESS} | {error, binary()})
) -> {ok, {ESM, ESO, ESQ, ESS}} | {error, binary()}.
typed_tuple4(Tup, Decode_first, Decode_second, Decode_third, Decode_fourth) ->
case gleam_stdlib:decode_tuple4(Tup) of
{error, Gleam@try_error} -> {error, Gleam@try_error};
{ok, {First, Second, Third, Fourth}} ->
case Decode_first(First) of
{error, Gleam@try_error@1} -> {error, Gleam@try_error@1};
{ok, A} ->
case Decode_second(Second) of
{error, Gleam@try_error@2} -> {error, Gleam@try_error@2};
{ok, B} ->
case Decode_third(Third) of
{error, Gleam@try_error@3} -> {error, Gleam@try_error@3};
{ok, C} ->
case Decode_fourth(Fourth) of
{error, Gleam@try_error@4} -> {error, Gleam@try_error@4};
{ok, D} ->
{ok, {A, B, C, D}}
end
end
end
end
end.
-spec tuple5(dynamic()) -> {ok,
{dynamic(),
dynamic(),
dynamic(),
dynamic(),
dynamic()}} |
{error, binary()}.
tuple5(A) ->
gleam_stdlib:decode_tuple5(A).
-spec typed_tuple5(
dynamic(),
fun((dynamic()) -> {ok, ESY} | {error, binary()}),
fun((dynamic()) -> {ok, ETA} | {error, binary()}),
fun((dynamic()) -> {ok, ETC} | {error, binary()}),
fun((dynamic()) -> {ok, ETE} | {error, binary()}),
fun((dynamic()) -> {ok, ETG} | {error, binary()})
) -> {ok, {ESY, ETA, ETC, ETE, ETG}} | {error, binary()}.
typed_tuple5(
Tup,
Decode_first,
Decode_second,
Decode_third,
Decode_fourth,
Decode_fifth
) ->
case gleam_stdlib:decode_tuple5(Tup) of
{error, Gleam@try_error} -> {error, Gleam@try_error};
{ok, {First, Second, Third, Fourth, Fifth}} ->
case Decode_first(First) of
{error, Gleam@try_error@1} -> {error, Gleam@try_error@1};
{ok, A} ->
case Decode_second(Second) of
{error, Gleam@try_error@2} -> {error, Gleam@try_error@2};
{ok, B} ->
case Decode_third(Third) of
{error, Gleam@try_error@3} -> {error, Gleam@try_error@3};
{ok, C} ->
case Decode_fourth(Fourth) of
{error, Gleam@try_error@4} -> {error, Gleam@try_error@4};
{ok, D} ->
case Decode_fifth(Fifth) of
{error, Gleam@try_error@5} -> {error, Gleam@try_error@5};
{ok, E} ->
{ok, {A, B, C, D, E}}
end
end
end
end
end
end.
-spec tuple6(dynamic()) -> {ok,
{dynamic(),
dynamic(),
dynamic(),
dynamic(),
dynamic(),
dynamic()}} |
{error, binary()}.
tuple6(A) ->
gleam_stdlib:decode_tuple6(A).
-spec typed_tuple6(
dynamic(),
fun((dynamic()) -> {ok, ETM} | {error, binary()}),
fun((dynamic()) -> {ok, ETO} | {error, binary()}),
fun((dynamic()) -> {ok, ETQ} | {error, binary()}),
fun((dynamic()) -> {ok, ETS} | {error, binary()}),
fun((dynamic()) -> {ok, ETU} | {error, binary()}),
fun((dynamic()) -> {ok, ETW} | {error, binary()})
) -> {ok, {ETM, ETO, ETQ, ETS, ETU, ETW}} | {error, binary()}.
typed_tuple6(
Tup,
Decode_first,
Decode_second,
Decode_third,
Decode_fourth,
Decode_fifth,
Decode_sixth
) ->
case gleam_stdlib:decode_tuple6(Tup) of
{error, Gleam@try_error} -> {error, Gleam@try_error};
{ok, {First, Second, Third, Fourth, Fifth, Sixth}} ->
case Decode_first(First) of
{error, Gleam@try_error@1} -> {error, Gleam@try_error@1};
{ok, A} ->
case Decode_second(Second) of
{error, Gleam@try_error@2} -> {error, Gleam@try_error@2};
{ok, B} ->
case Decode_third(Third) of
{error, Gleam@try_error@3} -> {error, Gleam@try_error@3};
{ok, C} ->
case Decode_fourth(Fourth) of
{error, Gleam@try_error@4} -> {error, Gleam@try_error@4};
{ok, D} ->
case Decode_fifth(Fifth) of
{error, Gleam@try_error@5} -> {error, Gleam@try_error@5};
{ok, E} ->
case Decode_sixth(Sixth) of
{error, Gleam@try_error@6} -> {error, Gleam@try_error@6};
{ok, F} ->
{ok,
{A, B, C, D, E, F}}
end
end
end
end
end
end
end.
-spec map(dynamic()) -> {ok, gleam@map:map_(dynamic(), dynamic())} |
{error, binary()}.
map(A) ->
gleam_stdlib:decode_map(A).
-spec any(dynamic(), list(fun((dynamic()) -> {ok, EUE} | {error, binary()}))) -> {ok,
EUE} |
{error, binary()}.
any(Data, Decoders) ->
gleam@result:map_error(
gleam@list:find_map(Decoders, fun(Decoder) -> Decoder(Data) end),
fun(_) -> <<"Unexpected value"/utf8>> end
).