Packages
caffeine_lang
3.0.2
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang@common@decoders.erl
-module(caffeine_lang@common@decoders).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/common/decoders.gleam").
-export([named_reference_decoder/2, non_empty_named_reference_list_decoder/2, non_empty_string_decoder/0, accepted_types_decoder/0, decode_value_to_string/1, decode_list_values_to_strings/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Type Restrictions:\n"
"\n"
" Collections:\n"
" - List(T): T must be a primitive (Boolean, Float, Integer, String)\n"
" - Dict(K, V): K and V must both be primitives\n"
"\n"
" Modifiers:\n"
" - Optional(T): T can be a primitive or collection, not another modifier\n"
" - Defaulted(T, default): T must be a primitive, default must be valid for T\n"
).
-file("src/caffeine_lang/common/decoders.gleam", 18).
?DOC(false).
-spec named_reference_decoder(list(IBQ), fun((IBQ) -> binary())) -> gleam@dynamic@decode:decoder(binary()).
named_reference_decoder(Collection, Name_extraction) ->
Names = begin
_pipe = Collection,
gleam@list:map(_pipe, Name_extraction)
end,
Default = {error, <<""/utf8>>},
gleam@dynamic@decode:new_primitive_decoder(
<<"NamedReference"/utf8>>,
fun(Dyn) ->
case gleam@dynamic@decode:run(
Dyn,
{decoder, fun gleam@dynamic@decode:decode_string/1}
) of
{ok, X} ->
case begin
_pipe@1 = Names,
gleam@list:contains(_pipe@1, X)
end of
true ->
{ok, X};
false ->
Default
end;
_ ->
Default
end
end
).
-file("src/caffeine_lang/common/decoders.gleam", 41).
?DOC(false).
-spec non_empty_named_reference_list_decoder(list(IBT), fun((IBT) -> binary())) -> gleam@dynamic@decode:decoder(list(binary())).
non_empty_named_reference_list_decoder(Collection, Name_extraction) ->
Inner_decoder = named_reference_decoder(Collection, Name_extraction),
gleam@dynamic@decode:then(
gleam@dynamic@decode:list(Inner_decoder),
fun(Refs) -> case Refs of
[] ->
gleam@dynamic@decode:failure([], <<"NonEmptyList"/utf8>>);
_ ->
gleam@dynamic@decode:success(Refs)
end end
).
-file("src/caffeine_lang/common/decoders.gleam", 57).
?DOC(false).
-spec non_empty_string_decoder() -> gleam@dynamic@decode:decoder(binary()).
non_empty_string_decoder() ->
Default = {error, <<""/utf8>>},
gleam@dynamic@decode:new_primitive_decoder(
<<"NonEmptyString"/utf8>>,
fun(Dyn) ->
case gleam@dynamic@decode:run(
Dyn,
{decoder, fun gleam@dynamic@decode:decode_string/1}
) of
{ok, <<""/utf8>>} ->
Default;
{ok, S} ->
{ok, S};
_ ->
Default
end
end
).
-file("src/caffeine_lang/common/decoders.gleam", 71).
?DOC(false).
-spec accepted_types_decoder() -> gleam@dynamic@decode:decoder(caffeine_lang@common@accepted_types:accepted_types()).
accepted_types_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Raw_string) ->
case caffeine_lang@common@accepted_types:parse_accepted_type(
Raw_string
) of
{ok, T} ->
gleam@dynamic@decode:success(T);
{error, nil} ->
gleam@dynamic@decode:failure(
{primitive_type, boolean},
<<"AcceptedType"/utf8>>
)
end
end
).
-file("src/caffeine_lang/common/decoders.gleam", 86).
?DOC(false).
-spec decode_value_to_string(
caffeine_lang@common@accepted_types:accepted_types()
) -> gleam@dynamic@decode:decoder(binary()).
decode_value_to_string(Typ) ->
caffeine_lang@common@accepted_types:decode_value_to_string(Typ).
-file("src/caffeine_lang/common/decoders.gleam", 93).
?DOC(false).
-spec decode_list_values_to_strings(
caffeine_lang@common@accepted_types:accepted_types()
) -> gleam@dynamic@decode:decoder(list(binary())).
decode_list_values_to_strings(Inner_type) ->
caffeine_lang@common@accepted_types:decode_list_values_to_strings(
Inner_type
).