added option for explicit termination requirement when parsing streams
This commit is contained in:
parent
3b3e33c6e3
commit
6515f9981d
11 changed files with 59 additions and 2232 deletions
|
@ -1 +0,0 @@
|
|||
42
|
|
@ -1,2 +0,0 @@
|
|||
[{number, "42"}].
|
||||
[{naked_values, true}].
|
|
@ -26,11 +26,22 @@ test_body(TestSpec, Dir) ->
|
|||
case file:consult(Dir ++ "/" ++ TestSpec) of
|
||||
{ok, [Events]} ->
|
||||
Decoder = jsx:decoder(),
|
||||
[{TestName, ?_assertEqual(Decoder(JSON), Events)}]
|
||||
[{TestName, ?_assertEqual(decode(Decoder, JSON), Events)}]
|
||||
; {ok, [Events, Flags]} ->
|
||||
Decoder = jsx:decoder(none, Flags),
|
||||
[{TestName, ?_assertEqual(Decoder(JSON), Events)}]
|
||||
[{TestName, ?_assertEqual(decode(Decoder, JSON), Events)}]
|
||||
end
|
||||
catch _:_ -> []
|
||||
end.
|
||||
|
||||
|
||||
decode(F, <<>>) ->
|
||||
{Result, _} = F(eof),
|
||||
Result;
|
||||
decode(F, <<A/utf8, Rest/binary>>) ->
|
||||
case F(<<A/utf8>>) of
|
||||
G when is_function(G) ->
|
||||
decode(G, Rest)
|
||||
; {Result, _} ->
|
||||
Result
|
||||
end.
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue