-module(simplejson@internal@stringify). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/simplejson/internal/stringify.gleam"). -export([to_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/simplejson/internal/stringify.gleam", 52). ?DOC(false). -spec encode_int(integer()) -> binary(). encode_int(N) -> erlang:integer_to_binary(N). -file("src/simplejson/internal/stringify.gleam", 56). ?DOC(false). -spec encode_float(float()) -> binary(). encode_float(N) -> gleam_stdlib:float_to_string(N). -file("src/simplejson/internal/stringify.gleam", 99). ?DOC(false). -spec encode_char(binary()) -> binary(). encode_char(Char) -> case Char of <<"\r\n"/utf8>> -> <<"\\r\\n"/utf8>>; <<"\x{00}"/utf8>> -> <<"\\u0000"/utf8>>; <<"\x{01}"/utf8>> -> <<"\\u0001"/utf8>>; <<"\x{02}"/utf8>> -> <<"\\u0002"/utf8>>; <<"\x{03}"/utf8>> -> <<"\\u0003"/utf8>>; <<"\x{04}"/utf8>> -> <<"\\u0004"/utf8>>; <<"\x{05}"/utf8>> -> <<"\\u0005"/utf8>>; <<"\x{06}"/utf8>> -> <<"\\u0006"/utf8>>; <<"\x{07}"/utf8>> -> <<"\\u0007"/utf8>>; <<"\x{08}"/utf8>> -> <<"\\b"/utf8>>; <<"\x{09}"/utf8>> -> <<"\\t"/utf8>>; <<"\x{0A}"/utf8>> -> <<"\\n"/utf8>>; <<"\x{0B}"/utf8>> -> <<"\\u000B"/utf8>>; <<"\x{0C}"/utf8>> -> <<"\\f"/utf8>>; <<"\x{0D}"/utf8>> -> <<"\\r"/utf8>>; <<"\x{0E}"/utf8>> -> <<"\\u000E"/utf8>>; <<"\x{0F}"/utf8>> -> <<"\\u000F"/utf8>>; <<"\x{10}"/utf8>> -> <<"\\u0010"/utf8>>; <<"\x{11}"/utf8>> -> <<"\\u0011"/utf8>>; <<"\x{12}"/utf8>> -> <<"\\u0012"/utf8>>; <<"\x{13}"/utf8>> -> <<"\\u0013"/utf8>>; <<"\x{14}"/utf8>> -> <<"\\u0014"/utf8>>; <<"\x{15}"/utf8>> -> <<"\\u0015"/utf8>>; <<"\x{16}"/utf8>> -> <<"\\u0016"/utf8>>; <<"\x{17}"/utf8>> -> <<"\\u0017"/utf8>>; <<"\x{18}"/utf8>> -> <<"\\u0018"/utf8>>; <<"\x{19}"/utf8>> -> <<"\\u0019"/utf8>>; <<"\x{1A}"/utf8>> -> <<"\\u001A"/utf8>>; <<"\x{1B}"/utf8>> -> <<"\\u001B"/utf8>>; <<"\x{1C}"/utf8>> -> <<"\\u001C"/utf8>>; <<"\x{1D}"/utf8>> -> <<"\\u001D"/utf8>>; <<"\x{1E}"/utf8>> -> <<"\\u001E"/utf8>>; <<"\x{1F}"/utf8>> -> <<"\\u001F"/utf8>>; <<"\""/utf8>> -> <<"\\\""/utf8>>; <<"\\"/utf8>> -> <<"\\\\"/utf8>>; _ -> Char end. -file("src/simplejson/internal/stringify.gleam", 92). ?DOC(false). -spec encode_string(binary(), binary()) -> binary(). encode_string(Str, Acc) -> case gleam_stdlib:string_pop_grapheme(Str) of {ok, {Char, Rest}} -> encode_string(Rest, <>); {error, _} -> Acc end. -file("src/simplejson/internal/stringify.gleam", 64). ?DOC(false). -spec encode_object_elements( list(binary()), gleam@dict:dict(binary(), simplejson@jsonvalue:json_value()), binary() ) -> binary(). encode_object_elements(Keys, O, Acc) -> case Keys of [Key | Rest] -> Value@1 = case gleam_stdlib:map_get(O, Key) of {ok, Value} -> Value; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"simplejson/internal/stringify"/utf8>>, function => <<"encode_object_elements"/utf8>>, line => 71, value => _assert_fail, start => 1572, 'end' => 1611, pattern_start => 1583, pattern_end => 1592}) end, encode_object_elements(Rest, O, <<<<<<<<<> -> <<""/utf8>>; _ -> <<","/utf8>> end))/binary>>/binary, "\""/utf8>>/binary, (encode_string( Key, <<""/utf8>> ))/binary>>/binary, "\":"/utf8>>/binary, (create_string( Value@1, <<""/utf8>> ))/binary>>); [] -> Acc end. -file("src/simplejson/internal/stringify.gleam", 16). ?DOC(false). -spec create_string(simplejson@jsonvalue:json_value(), binary()) -> binary(). create_string(Json, Acc) -> case Json of {json_bool, B} -> case B of true -> <>; false -> <> end; {json_string, S} -> <<<<<>/binary, (encode_string(S, <<""/utf8>>))/binary>>/binary, "\""/utf8>>; {json_array, L} -> <<<<<>/binary, (encode_list(case maps:size(L) of 0 -> []; N -> _pipe = gleam@list:range(0, N - 1), gleam@list:map( _pipe, fun(I) -> V@1 = case gleam_stdlib:map_get(L, I) of {ok, V} -> V; _assert_fail -> erlang:error( #{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"simplejson/internal/stringify"/utf8>>, function => <<"create_string"/utf8>>, line => 36, value => _assert_fail, start => 801, 'end' => 834, pattern_start => 812, pattern_end => 817} ) end, V@1 end ) end, <<""/utf8>>))/binary>>/binary, "]"/utf8>>; json_null -> <>; {json_number, _, _, {some, S@1}} -> <>; {json_number, {some, I@1}, _, _} -> <>; {json_number, _, {some, F}, _} -> <>; {json_number, none, none, _} -> erlang:error(#{gleam_error => panic, message => <<"`panic` expression evaluated."/utf8>>, file => <>, module => <<"simplejson/internal/stringify"/utf8>>, function => <<"create_string"/utf8>>, line => 47}); {json_object, O} -> <<<<<>/binary, (encode_object(O))/binary>>/binary, "}"/utf8>> end. -file("src/simplejson/internal/stringify.gleam", 60). ?DOC(false). -spec encode_object( gleam@dict:dict(binary(), simplejson@jsonvalue:json_value()) ) -> binary(). encode_object(O) -> encode_object_elements(maps:keys(O), O, <<""/utf8>>). -file("src/simplejson/internal/stringify.gleam", 12). ?DOC(false). -spec to_string(simplejson@jsonvalue:json_value()) -> binary(). to_string(Json) -> create_string(Json, <<""/utf8>>). -file("src/simplejson/internal/stringify.gleam", 140). ?DOC(false). -spec encode_list(list(simplejson@jsonvalue:json_value()), binary()) -> binary(). encode_list(L, Acc) -> case L of [{json_array, _} = El | Rest] -> encode_list(Rest, <<<> -> <<""/utf8>>; _ -> <<","/utf8>> end))/binary>>/binary, (create_string(El, <<""/utf8>>))/binary>>); [{json_bool, _} = El | Rest] -> encode_list(Rest, <<<> -> <<""/utf8>>; _ -> <<","/utf8>> end))/binary>>/binary, (create_string(El, <<""/utf8>>))/binary>>); [json_null = El | Rest] -> encode_list(Rest, <<<> -> <<""/utf8>>; _ -> <<","/utf8>> end))/binary>>/binary, (create_string(El, <<""/utf8>>))/binary>>); [{json_object, _} = El | Rest] -> encode_list(Rest, <<<> -> <<""/utf8>>; _ -> <<","/utf8>> end))/binary>>/binary, (create_string(El, <<""/utf8>>))/binary>>); [{json_string, _} = El | Rest] -> encode_list(Rest, <<<> -> <<""/utf8>>; _ -> <<","/utf8>> end))/binary>>/binary, (create_string(El, <<""/utf8>>))/binary>>); [{json_number, _, _, _} = El | Rest] -> encode_list(Rest, <<<> -> <<""/utf8>>; _ -> <<","/utf8>> end))/binary>>/binary, (create_string(El, <<""/utf8>>))/binary>>); [] -> Acc end.