add incomplete_handler and tests

This commit is contained in:
alisdair sullivan 2013-03-04 23:13:23 -08:00
parent ca89432e7a
commit 2d7b690a91
4 changed files with 86 additions and 38 deletions

View file

@ -49,18 +49,22 @@ parser(Handler, State, Config) ->
-ifndef(incomplete).
-define(incomplete(State, Handler, Stack, Config),
{incomplete, fun(end_stream) ->
case State([end_json],
Handler,
Stack,
Config) of
{incomplete, _} -> ?error(State, [], Handler, Stack, Config)
; Events -> Events
case Config#config.incomplete_handler of
false ->
{incomplete, fun(end_stream) ->
case State([end_json],
Handler,
Stack,
Config) of
{incomplete, _} -> ?error(State, [], Handler, Stack, Config)
; Events -> Events
end
; (Tokens) ->
State(Tokens, Handler, Stack, Config)
end
; (Tokens) ->
State(Tokens, Handler, Stack, Config)
end
}
};
F -> F([], {parser, State, Handler, Stack}, Config)
end
).
-endif.
@ -236,4 +240,13 @@ custom_error_handler_test_() ->
].
custom_incomplete_handler_test_() ->
[
{"custom incomplete handler", ?_assertError(
badarg,
parse([], [{incomplete_handler, fun(_, _, _) -> erlang:error(badarg) end}])
)}
].
-endif.