Current section

Files

Jump to
crossbar src crossbar@internal@cast.erl
Raw

src/crossbar@internal@cast.erl

-module(crossbar@internal@cast).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([int/1, float/1, string/1, bool/1, to_string/1]).
-spec cast(
any(),
fun((gleam@dynamic:dynamic_()) -> {ok, FQK} |
{error, list(gleam@dynamic:decode_error())})
) -> {ok, FQK} | {error, list(gleam@dynamic:decode_error())}.
cast(From, To) ->
_pipe = gleam@dynamic:from(From),
_pipe@1 = To(_pipe),
(fun(X) -> case X of
{ok, V} ->
{ok, V};
{error, E} ->
{error, E}
end end)(_pipe@1).
-spec int(any()) -> integer().
int(From) ->
_pipe = cast(From, fun gleam@dynamic:int/1),
gleam@result:unwrap(_pipe, 0).
-spec float(any()) -> float().
float(From) ->
_pipe = cast(From, fun gleam@dynamic:float/1),
gleam@result:unwrap(_pipe, +0.0).
-spec string(any()) -> binary().
string(From) ->
_pipe = cast(From, fun gleam@dynamic:string/1),
gleam@result:unwrap(_pipe, <<""/utf8>>).
-spec bool(any()) -> boolean().
bool(From) ->
_pipe = cast(From, fun gleam@dynamic:bool/1),
gleam@result:unwrap(_pipe, false).
-spec bool_str_decoder(gleam@dynamic:dynamic_()) -> {ok, binary()} |
{error, list(gleam@dynamic:decode_error())}.
bool_str_decoder(Dyn) ->
gleam@result:map(gleam@dynamic:bool(Dyn), fun(V) -> case V of
true ->
<<"true"/utf8>>;
false ->
<<"false"/utf8>>
end end).
-spec int_str_decoder(gleam@dynamic:dynamic_()) -> {ok, binary()} |
{error, list(gleam@dynamic:decode_error())}.
int_str_decoder(Dyn) ->
gleam@result:map(
gleam@dynamic:int(Dyn),
fun(V) -> gleam@int:to_string(V) end
).
-spec float_str_decoder(gleam@dynamic:dynamic_()) -> {ok, binary()} |
{error, list(gleam@dynamic:decode_error())}.
float_str_decoder(Dyn) ->
gleam@result:map(
gleam@dynamic:float(Dyn),
fun(V) -> gleam@float:to_string(V) end
).
-spec to_string(any()) -> binary().
to_string(Value) ->
_pipe = Value,
_pipe@1 = gleam@dynamic:from(_pipe),
_pipe@2 = (gleam@dynamic:any(
[fun gleam@dynamic:string/1,
fun bool_str_decoder/1,
fun int_str_decoder/1,
fun float_str_decoder/1]
))(_pipe@1),
gleam@result:unwrap(_pipe@2, <<""/utf8>>).