Current section
Files
Jump to
Current section
Files
src/gleam_synapses@model@encoding@attribute@attribute_serialized.erl
-module(gleam_synapses@model@encoding@attribute@attribute_serialized).
-compile(no_auto_import).
-export([serialized/1, decoder/0, realized/1]).
-spec serialized(gleam_synapses@model@encoding@attribute@attribute:attribute()) -> gleam@json:json().
serialized(Attr) ->
case Attr of
{discrete, Key, Values} ->
Field = gleam@json:object(
[{<<"key"/utf8>>, gleam@json:string(Key)},
{<<"values"/utf8>>,
begin
_pipe = Values,
_pipe@1 = gleam_zlists:to_list(_pipe),
gleam@json:array(_pipe@1, fun gleam@json:string/1)
end}]
),
gleam@json:object(
[{<<"Case"/utf8>>,
gleam@json:string(<<"SerializableDiscrete"/utf8>>)},
{<<"Fields"/utf8>>,
gleam@json:array([Field], fun gleam@function:identity/1)}]
);
{continuous, Key@1, Min, Max} ->
Field@1 = gleam@json:object(
[{<<"key"/utf8>>, gleam@json:string(Key@1)},
{<<"min"/utf8>>, gleam@json:float(Min)},
{<<"max"/utf8>>, gleam@json:float(Max)}]
),
gleam@json:object(
[{<<"Case"/utf8>>,
gleam@json:string(<<"SerializableContinuous"/utf8>>)},
{<<"Fields"/utf8>>,
gleam@json:array([Field@1], fun gleam@function:identity/1)}]
)
end.
-spec discrete_field_decoder() -> fun((gleam@dynamic:dynamic()) -> {ok,
gleam_synapses@model@encoding@attribute@attribute:attribute()} |
{error, list(gleam@dynamic:decode_error())}).
discrete_field_decoder() ->
gleam@dynamic:decode2(
fun(Key, Values) -> {discrete, Key, gleam_zlists:of_list(Values)} end,
gleam@dynamic:field(<<"key"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(
<<"values"/utf8>>,
gleam@dynamic:list(fun gleam@dynamic:string/1)
)
).
-spec continuous_field_decoder() -> fun((gleam@dynamic:dynamic()) -> {ok,
gleam_synapses@model@encoding@attribute@attribute:attribute()} |
{error, list(gleam@dynamic:decode_error())}).
continuous_field_decoder() ->
gleam@dynamic:decode3(
fun(A, B, C) -> {continuous, A, B, C} end,
gleam@dynamic:field(<<"key"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"min"/utf8>>, fun gleam@dynamic:float/1),
gleam@dynamic:field(<<"max"/utf8>>, fun gleam@dynamic:float/1)
).
-spec decoder() -> fun((gleam@dynamic:dynamic()) -> {ok,
gleam_synapses@model@encoding@attribute@attribute:attribute()} |
{error, list(gleam@dynamic:decode_error())}).
decoder() ->
gleam@dynamic:decode2(fun(Case_val, Fields) -> case {Case_val, Fields} of
{<<"SerializableDiscrete"/utf8>>, [Discrete]} ->
Discrete;
{<<"SerializableContinuous"/utf8>>, [Continuous]} ->
Continuous
end end, gleam@dynamic:field(
<<"Case"/utf8>>,
fun gleam@dynamic:string/1
), gleam@dynamic:field(
<<"Fields"/utf8>>,
gleam@dynamic:list(
gleam@dynamic:any(
[discrete_field_decoder(), continuous_field_decoder()]
)
)
)).
-spec realized(gleam_synapses@model@encoding@attribute@attribute:attribute()) -> gleam_synapses@model@encoding@attribute@attribute:attribute().
realized(Attr) ->
case Attr of
{discrete, _@1, Values} ->
gleam_zlists:to_list(Values);
{continuous, _@2, _@3, _@4} ->
[]
end,
Attr.