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, inline]).
-define(FILEPATH, "src/internal/foo_json.gleam").
-export([to_json/1, to_string/1, get_decoder_foo/0, from_string/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(false).
-file("src/internal/foo_json.gleam", 6).
?DOC(false).
-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)}]
).
-file("src/internal/foo_json.gleam", 23).
?DOC(false).
-spec to_string(internal@foo:foo_json()) -> binary().
to_string(T) ->
gleam@json:to_string(to_json(T)).
-file("src/internal/foo_json.gleam", 27).
?DOC(false).
-spec get_decoder_foo() -> gleam@dynamic@decode:decoder(internal@foo:foo_json()).
get_decoder_foo() ->
gleam@dynamic@decode:field(
<<"a_bool"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_bool/1},
fun(A_bool) ->
gleam@dynamic@decode:field(
<<"b_int"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(B_int) ->
gleam@dynamic@decode:field(
<<"c_float"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_float/1},
fun(C_float) ->
gleam@dynamic@decode:field(
<<"d_two_tuple"/utf8>>,
begin
gleam@dynamic@decode:field(
0,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(El0) ->
gleam@dynamic@decode:field(
1,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(El1) ->
gleam@dynamic@decode:success(
{El0, El1}
)
end
)
end
)
end,
fun(D_two_tuple) ->
gleam@dynamic@decode:field(
<<"e_option_int"/utf8>>,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_int/1}
),
fun(E_option_int) ->
gleam@dynamic@decode:field(
<<"f_string_list"/utf8>>,
gleam@dynamic@decode:list(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(F_string_list) ->
gleam@dynamic@decode:success(
{foo,
A_bool,
B_int,
C_float,
D_two_tuple,
E_option_int,
F_string_list}
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/internal/foo_json.gleam", 48).
?DOC(false).
-spec from_string(binary()) -> {ok, internal@foo:foo_json()} |
{error, gleam@json:decode_error()}.
from_string(Json_str) ->
gleam@json:parse(Json_str, get_decoder_foo()).