Current section
Files
Jump to
Current section
Files
src/castor@decodex.erl
-module(castor@decodex).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/castor/decodex.gleam").
-export([default_field/4, optional_field/3, discriminate/4, number/0, any/0]).
-file("src/castor/decodex.gleam", 5).
-spec default_field(
any(),
gleam@dynamic@decode:decoder(FWA),
FWA,
fun((FWA) -> gleam@dynamic@decode:decoder(FWT))
) -> gleam@dynamic@decode:decoder(FWT).
default_field(Key, Decoder, Default, K) ->
gleam@dynamic@decode:optional_field(
Key,
Default,
begin
_pipe = gleam@dynamic@decode:optional(Decoder),
gleam@dynamic@decode:map(
_pipe,
fun(_capture) -> gleam@option:unwrap(_capture, Default) end
)
end,
K
).
-file("src/castor/decodex.gleam", 14).
-spec optional_field(
any(),
gleam@dynamic@decode:decoder(FXD),
fun((gleam@option:option(FXD)) -> gleam@dynamic@decode:decoder(FXB))
) -> gleam@dynamic@decode:decoder(FXB).
optional_field(Key, Decoder, K) ->
gleam@dynamic@decode:optional_field(
Key,
none,
gleam@dynamic@decode:optional(Decoder),
K
).
-file("src/castor/decodex.gleam", 18).
-spec discriminate(
any(),
gleam@dynamic@decode:decoder(FWI),
FWK,
fun((FWI) -> {ok, gleam@dynamic@decode:decoder(FWK)} | {error, binary()})
) -> gleam@dynamic@decode:decoder(FWK).
discriminate(Field, Decoder, Default, Choose) ->
gleam@dynamic@decode:optional_field(
Field,
gleam@dynamic@decode:failure(Default, <<"Discriminator"/utf8>>),
gleam@dynamic@decode:map(Decoder, fun(On) -> case Choose(On) of
{ok, Decoder@1} ->
Decoder@1;
{error, Message} ->
gleam@dynamic@decode:failure(Default, Message)
end end),
fun(On@1) -> On@1 end
).
-file("src/castor/decodex.gleam", 37).
-spec number() -> gleam@dynamic@decode:decoder(float()).
number() ->
gleam@dynamic@decode:one_of(
{decoder, fun gleam@dynamic@decode:decode_float/1},
[gleam@dynamic@decode:map(
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun erlang:float/1
)]
).
-file("src/castor/decodex.gleam", 41).
-spec any() -> gleam@dynamic@decode:decoder(gleam@dynamic:dynamic_()).
any() ->
gleam@dynamic@decode:new_primitive_decoder(
<<"any"/utf8>>,
fun(Field@0) -> {ok, Field@0} end
).