diff --git a/examples/jsx_parser.erl b/examples/jsx_parser.erl index 4b9f0e8..8b18d2e 100644 --- a/examples/jsx_parser.erl +++ b/examples/jsx_parser.erl @@ -87,7 +87,7 @@ event({Type, Value}, [Array|Stack]) when is_list(Array) -> event(reset, _) -> []; -event(end_of_json, [Stack]) -> +event(end_json, [Stack]) -> Stack. diff --git a/examples/jsx_prettify.erl b/examples/jsx_prettify.erl index 405e396..0765811 100644 --- a/examples/jsx_prettify.erl +++ b/examples/jsx_prettify.erl @@ -90,7 +90,7 @@ prettify({Type, Value}, {Acc, Indent, Level, key}) -> prettify(reset, {_, Indent, _, _}) -> {[], Indent, 0, new}; -prettify(end_of_json, {Acc, _, _, _}) -> +prettify(end_json, {Acc, _, _, _}) -> Acc. diff --git a/examples/jsx_stream_parser.erl b/examples/jsx_stream_parser.erl index 35898d2..a653311 100644 --- a/examples/jsx_stream_parser.erl +++ b/examples/jsx_stream_parser.erl @@ -60,7 +60,7 @@ event({string, String}, capture) -> event(reset, _) -> 0; -event(end_of_json, _) -> +event(end_json, _) -> throw(not_found); event(_, Level) -> diff --git a/src/jsx.erl b/src/jsx.erl index c191bfe..5cda8e6 100644 --- a/src/jsx.erl +++ b/src/jsx.erl @@ -55,7 +55,7 @@ parser() -> parser([]). parser(Opts) -> - F = fun(end_of_json, State) -> lists:reverse(State) + F = fun(end_json, State) -> lists:reverse(State) ; (reset, _State) -> [] ; (Event, State) -> [Event] ++ State end, diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index c409514..d93b2c5 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -35,9 +35,9 @@ %% callbacks to our handler are roughly equivalent to a fold over the events, incremental %% rather than all at once. -fold(end_of_json, {F, State}) -> - F(end_of_json, State); -fold(Event, {F, State}) when is_function(F) -> +fold(end_json, {F, State}) -> + F(end_json, State); +fold(Event, {F, State}) -> {F, F(Event, State)}. @@ -94,11 +94,11 @@ maybe_done(<>, [array|_] = Stack, Callbacks, Opts maybe_done(<>, Stack, Callbacks, ?comments_enabled(Opts)) -> maybe_comment(Rest, fun(Resume) -> maybe_done(Resume, Stack, Callbacks, Opts) end); maybe_done(Bin, [], Callbacks, ?stream_mode(Opts)) -> - {fold(end_of_json, Callbacks), fun(Stream) -> + {fold(end_json, Callbacks), fun(Stream) -> start(<>, [], fold(reset, Callbacks), Opts) end}; maybe_done(<<>>, [], Callbacks, Opts) -> - {fold(end_of_json, Callbacks), fun(Stream) -> maybe_done(Stream, [], Callbacks, Opts) end}; + {fold(end_json, Callbacks), fun(Stream) -> maybe_done(Stream, [], Callbacks, Opts) end}; maybe_done(Bin, Stack, Callbacks, Opts) -> case byte_size(Bin) >= ?symbol_size of true -> {error, badjson} @@ -433,11 +433,11 @@ zero(<>, Stack, Callbacks, ?comments_enabled(Op maybe_comment(Rest, fun(Resume) -> zero(Resume, Stack, Callbacks, Opts, Acc) end); zero(Bin, [], Callbacks, ?stream_mode(Opts), Acc) -> CB = fold({integer, lists:reverse(Acc)}, Callbacks), - {fold(end_of_json, CB), fun(Stream) -> + {fold(end_json, CB), fun(Stream) -> start(<>, [], fold(reset, CB), Opts) end}; zero(<<>>, [], Callbacks, Opts, Acc) -> - {fold(end_of_json, fold({integer, lists:reverse(Acc)}, Callbacks)), + {fold(end_json, fold({integer, lists:reverse(Acc)}, Callbacks)), fun(Stream) -> zero(Stream, [], Callbacks, Opts, Acc) end}; zero(Bin, Stack, Callbacks, Opts, Acc) -> case byte_size(Bin) >= ?symbol_size of @@ -473,11 +473,11 @@ integer(<>, Stack, Callbacks, ?comments_enabled maybe_comment(Rest, fun(Resume) -> integer(Resume, Stack, Callbacks, Opts, Acc) end); integer(Bin, [], Callbacks, ?stream_mode(Opts), Acc) -> CB = fold({integer, lists:reverse(Acc)}, Callbacks), - {fold(end_of_json, CB), fun(Stream) -> + {fold(end_json, CB), fun(Stream) -> start(<>, [], fold(reset, CB), Opts) end}; integer(<<>>, [], Callbacks, Opts, Acc) -> - {fold(end_of_json, fold({integer, lists:reverse(Acc)}, Callbacks)), + {fold(end_json, fold({integer, lists:reverse(Acc)}, Callbacks)), fun(Stream) -> integer(Stream, [], Callbacks, Opts, Acc) end}; integer(Bin, Stack, Callbacks, Opts, Acc) -> case byte_size(Bin) >= ?symbol_size of @@ -525,11 +525,11 @@ decimal(<>, Stack, Callbacks, ?comments_enabled maybe_comment(Rest, fun(Resume) -> decimal(Resume, Stack, Callbacks, Opts, Acc) end); decimal(Bin, [], Callbacks, ?stream_mode(Opts), Acc) -> CB = fold({float, lists:reverse(Acc)}, Callbacks), - {fold(end_of_json, CB), fun(Stream) -> + {fold(end_json, CB), fun(Stream) -> start(<>, [], fold(reset, CB), Opts) end}; decimal(<<>>, [], Callbacks, Opts, Acc) -> - {fold(end_of_json, fold({float, lists:reverse(Acc)}, Callbacks)), + {fold(end_json, fold({float, lists:reverse(Acc)}, Callbacks)), fun(Stream) -> decimal(Stream, [], Callbacks, Opts, Acc) end}; decimal(Bin, Stack, Callbacks, Opts, Acc) -> case byte_size(Bin) >= ?symbol_size of @@ -585,11 +585,11 @@ exp(<>, Stack, Callbacks, Opts, Acc) when ?is_whitespa maybe_done(Rest, Stack, fold({float, lists:reverse(Acc)}, Callbacks), Opts); exp(Bin, [], Callbacks, ?stream_mode(Opts), Acc) -> CB = fold({float, lists:reverse(Acc)}, Callbacks), - {fold(end_of_json, CB), fun(Stream) -> + {fold(end_json, CB), fun(Stream) -> start(<>, [], fold(reset, CB), Opts) end}; exp(<<>>, [], Callbacks, Opts, Acc) -> - {fold(end_of_json, fold({float, lists:reverse(Acc)}, Callbacks)), + {fold(end_json, fold({float, lists:reverse(Acc)}, Callbacks)), fun(Stream) -> exp(Stream, [], Callbacks, Opts, Acc) end}; exp(Bin, Stack, Callbacks, Opts, Acc) -> case byte_size(Bin) >= ?symbol_size of diff --git a/src/jsx_types.hrl b/src/jsx_types.hrl index fb742b4..d67d381 100644 --- a/src/jsx_types.hrl +++ b/src/jsx_types.hrl @@ -43,7 +43,7 @@ | end_object | start_array | end_array - | end_of_json + | end_json | reset | {key, unicode_string()} | {string, unicode_string()} diff --git a/test/jsx_test.erl b/test/jsx_test.erl index e84abf0..6496384 100644 --- a/test/jsx_test.erl +++ b/test/jsx_test.erl @@ -41,7 +41,7 @@ test(Dir) -> decoder(Flags) -> jsx:decoder({jsx_test, test_event, []}, Flags). -test_event(end_of_json, Acc) -> +test_event(end_json, Acc) -> lists:reverse(Acc); test_event(Event, Acc) -> [Event] ++ Acc.