Current section
Files
Jump to
Current section
Files
src/internal@foo_json.erl
-module(internal@foo_json).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([to_json/1, to_string/1, from_json/1]).
-spec to_json(internal@foo:foo_json()) -> gleam@json:json().
to_json(T) ->
gleam@json:object(
[{<<"a_bool"/utf8>>, gleam@json:bool(erlang:element(2, T))},
{<<"b_int"/utf8>>, gleam@json:int(erlang:element(3, T))},
{<<"c_float"/utf8>>, gleam@json:float(erlang:element(4, T))},
{<<"d_two_tuple"/utf8>>,
gleam@json:preprocessed_array(
[gleam@json:int(erlang:element(1, erlang:element(5, T))),
gleam@json:string(
erlang:element(2, erlang:element(5, T))
)]
)},
{<<"e_option_int"/utf8>>,
gleam@json:nullable(erlang:element(6, T), fun gleam@json:int/1)},
{<<"f_string_list"/utf8>>,
gleam@json:array(erlang:element(7, T), fun gleam@json:string/1)}]
).
-spec to_string(internal@foo:foo_json()) -> binary().
to_string(T) ->
gleam@json:to_string(to_json(T)).
-spec from_json(binary()) -> {ok, internal@foo:foo_json()} |
{error, gleam@json:decode_error()}.
from_json(Json_str) ->
gleam@json:decode(
Json_str,
gleam@dynamic:decode6(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5) -> {foo, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5} end,
gleam@dynamic:field(<<"a_bool"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(<<"b_int"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(<<"c_float"/utf8>>, fun gleam@dynamic:float/1),
gleam@dynamic:field(
<<"d_two_tuple"/utf8>>,
gleam@dynamic:tuple2(
fun gleam@dynamic:int/1,
fun gleam@dynamic:string/1
)
),
gleam@dynamic:field(
<<"e_option_int"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:int/1)
),
gleam@dynamic:field(
<<"f_string_list"/utf8>>,
gleam@dynamic:list(fun gleam@dynamic:string/1)
)
)
).