Export JSON types so libraries wrapping JSX can use them in their typespecs

This commit is contained in:
Devin Torres 2012-11-06 08:30:00 -06:00
parent cb14b92a22
commit d588361304

View file

@ -32,6 +32,8 @@
-export([to_json/1, to_json/2]). -export([to_json/1, to_json/2]).
-export([to_term/1, to_term/2]). -export([to_term/1, to_term/2]).
-export_type([json_term/0, json_text/0]).
%% test handler %% test handler
-ifdef(TEST). -ifdef(TEST).
-export([init/1, handle_event/2]). -export([init/1, handle_event/2]).
@ -148,7 +150,7 @@ encoder(Handler, State, Opts) -> jsx_encoder:encoder(Handler, State, Opts).
| false | false
| null | null
| end_json. | end_json.
-type parser() :: fun((token() | end_stream) -> any()). -type parser() :: fun((token() | end_stream) -> any()).
@ -235,10 +237,10 @@ init([]) -> [].
handle_event(end_json, State) -> lists:reverse([end_json] ++ State); handle_event(end_json, State) -> lists:reverse([end_json] ++ State);
handle_event(Event, State) -> [Event] ++ State. handle_event(Event, State) -> [Event] ++ State.
jsx_decoder_gen([]) -> [];
jsx_decoder_gen([]) -> [];
jsx_decoder_gen([Test|Rest]) -> jsx_decoder_gen([Test|Rest]) ->
Name = proplists:get_value(name, Test), Name = proplists:get_value(name, Test),
JSON = proplists:get_value(json, Test), JSON = proplists:get_value(json, Test),
@ -273,7 +275,7 @@ load_tests([Test|Rest], Dir, Acc) ->
parse_tests(TestSpec, Dir) -> parse_tests(TestSpec, Dir) ->
parse_tests(TestSpec, Dir, []). parse_tests(TestSpec, Dir, []).
parse_tests([{json, Path}|Rest], Dir, Acc) when is_list(Path) -> parse_tests([{json, Path}|Rest], Dir, Acc) when is_list(Path) ->
case file:read_file(Dir ++ "/" ++ Path) of case file:read_file(Dir ++ "/" ++ Path) of
{ok, Bin} -> parse_tests(Rest, Dir, [{json, Bin}] ++ Acc) {ok, Bin} -> parse_tests(Rest, Dir, [{json, Bin}] ++ Acc)
@ -299,7 +301,7 @@ test_decode(JSON, Flags) ->
error:badarg -> {error, badarg} error:badarg -> {error, badarg}
end. end.
incremental_decode(<<C:1/binary, Rest/binary>>, Flags) -> incremental_decode(<<C:1/binary, Rest/binary>>, Flags) ->
P = jsx_decoder:decoder(?MODULE, [], Flags ++ [explicit_end]), P = jsx_decoder:decoder(?MODULE, [], Flags ++ [explicit_end]),
try incremental_decode_loop(P(C), Rest) try incremental_decode_loop(P(C), Rest)
@ -314,5 +316,5 @@ incremental_decode_loop({incomplete, More}, <<>>) ->
incremental_decode_loop({incomplete, More}, <<C:1/binary, Rest/binary>>) -> incremental_decode_loop({incomplete, More}, <<C:1/binary, Rest/binary>>) ->
incremental_decode_loop(More(C), Rest). incremental_decode_loop(More(C), Rest).
-endif. -endif.