multi_term mode removed until sane interface can be developed
This commit is contained in:
parent
ba057d13cc
commit
aca326b42e
4 changed files with 0 additions and 49 deletions
42
src/jsx.erl
42
src/jsx.erl
|
@ -261,47 +261,5 @@ incremental_decode_loop({jsx, Event, Next}, Rest, Acc) ->
|
||||||
incremental_decode_loop({error, {badjson, _Error}}, _Rest, _Acc) ->
|
incremental_decode_loop({error, {badjson, _Error}}, _Rest, _Acc) ->
|
||||||
{error, badjson}.
|
{error, badjson}.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
multi_decode_test_() ->
|
|
||||||
[
|
|
||||||
{"multiple values in a single stream", ?_assert(
|
|
||||||
multi_decode(multi_json_body(), []) =:= multi_test_result()
|
|
||||||
)}
|
|
||||||
].
|
|
||||||
|
|
||||||
|
|
||||||
multi_decode(JSON, Flags) ->
|
|
||||||
P = jsx:decoder([multi_term, iterate] ++ Flags),
|
|
||||||
multi_decode_loop(P(JSON), [[]]).
|
|
||||||
|
|
||||||
multi_decode_loop({jsx, incomplete, _Next}, [[]|Acc]) ->
|
|
||||||
lists:reverse(Acc);
|
|
||||||
multi_decode_loop({jsx, end_json, Next}, [S|Acc]) ->
|
|
||||||
multi_decode_loop(Next(), [[]|[lists:reverse(S)] ++ Acc]);
|
|
||||||
multi_decode_loop({jsx, E, Next}, [S|Acc]) ->
|
|
||||||
multi_decode_loop(Next(), [[E] ++ S] ++ Acc).
|
|
||||||
|
|
||||||
|
|
||||||
multi_json_body() ->
|
|
||||||
<<"0 1 -1 1e1 0.7 0.7e-1 truefalsenull {} {\"key\": \"value\"}[] [1, 2, 3]\"hope this works\"">>.
|
|
||||||
|
|
||||||
multi_test_result() ->
|
|
||||||
[[{integer, 0}],
|
|
||||||
[{integer, 1}],
|
|
||||||
[{integer, -1}],
|
|
||||||
[{float, 1.0e1}],
|
|
||||||
[{float, 0.7}],
|
|
||||||
[{float, 0.7e-1}],
|
|
||||||
[{literal, true}],
|
|
||||||
[{literal, false}],
|
|
||||||
[{literal, null}],
|
|
||||||
[start_object, end_object],
|
|
||||||
[start_object, {key, "key"}, {string, "value"}, end_object],
|
|
||||||
[start_array, end_array],
|
|
||||||
[start_array, {integer, 1}, {integer, 2}, {integer, 3}, end_array],
|
|
||||||
[{string, "hope this works"}]
|
|
||||||
].
|
|
||||||
|
|
||||||
|
|
||||||
-endif.
|
-endif.
|
|
@ -289,8 +289,6 @@ maybe_done(<<?comma/?utfx, Rest/binary>>, T, [object|Stack], Opts) ->
|
||||||
key(Rest, T, [key|Stack], Opts);
|
key(Rest, T, [key|Stack], Opts);
|
||||||
maybe_done(<<?comma/?utfx, Rest/binary>>, T, [array|_] = Stack, Opts) ->
|
maybe_done(<<?comma/?utfx, Rest/binary>>, T, [array|_] = Stack, Opts) ->
|
||||||
value(Rest, T, Stack, Opts);
|
value(Rest, T, Stack, Opts);
|
||||||
maybe_done(Rest, T, [], #opts{multi_term=true}=Opts) ->
|
|
||||||
emit([end_json], {start, Rest, T, [[], Opts]});
|
|
||||||
maybe_done(Rest, T, [], Opts) ->
|
maybe_done(Rest, T, [], Opts) ->
|
||||||
done(Rest, T, Opts);
|
done(Rest, T, Opts);
|
||||||
maybe_done(Bin, T, Stack, Opts) ->
|
maybe_done(Bin, T, Stack, Opts) ->
|
||||||
|
|
|
@ -133,8 +133,6 @@ maybe_done([], T, [], _Opts) ->
|
||||||
emit([end_json, incomplete], {bad_json, [], T, []});
|
emit([end_json, incomplete], {bad_json, [], T, []});
|
||||||
maybe_done([end_json], T, [], _Opts) ->
|
maybe_done([end_json], T, [], _Opts) ->
|
||||||
emit([end_json, incomplete], {bad_json, [], T, []});
|
emit([end_json, incomplete], {bad_json, [], T, []});
|
||||||
maybe_done([end_json|Forms], T, [], #opts{multi_term=true}=Opts) ->
|
|
||||||
emit([end_json], {start, Forms, T, [Opts]});
|
|
||||||
maybe_done([end_object|Forms], T, [object|Stack], Opts) ->
|
maybe_done([end_object|Forms], T, [object|Stack], Opts) ->
|
||||||
emit([end_object], {maybe_done, Forms, T, [Stack, Opts]});
|
emit([end_object], {maybe_done, Forms, T, [Stack, Opts]});
|
||||||
maybe_done([end_array|Forms], T, [array|Stack], Opts) ->
|
maybe_done([end_array|Forms], T, [array|Stack], Opts) ->
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
|
|
||||||
%% opts record for decoder/encoder
|
%% opts record for decoder/encoder
|
||||||
-record(opts, {
|
-record(opts, {
|
||||||
multi_term = false,
|
|
||||||
loose_unicode = false,
|
loose_unicode = false,
|
||||||
encoding = auto,
|
encoding = auto,
|
||||||
escape_forward_slash = false, %% does nothing, used by encoder
|
escape_forward_slash = false, %% does nothing, used by encoder
|
||||||
|
@ -37,8 +36,6 @@ parse_opts(Opts) ->
|
||||||
|
|
||||||
parse_opts([], Opts) ->
|
parse_opts([], Opts) ->
|
||||||
Opts;
|
Opts;
|
||||||
parse_opts([multi_term|Rest], Opts) ->
|
|
||||||
parse_opts(Rest, Opts#opts{multi_term=true});
|
|
||||||
parse_opts([loose_unicode|Rest], Opts) ->
|
parse_opts([loose_unicode|Rest], Opts) ->
|
||||||
parse_opts(Rest, Opts#opts{loose_unicode=true});
|
parse_opts(Rest, Opts#opts{loose_unicode=true});
|
||||||
parse_opts([iterate|Rest], Opts) ->
|
parse_opts([iterate|Rest], Opts) ->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue