changed end of tokenizing marker
This commit is contained in:
parent
eadb7acbdd
commit
c29f60ea34
4 changed files with 11 additions and 11 deletions
|
@ -79,7 +79,7 @@ event({Type, Value}, [{key, Key}, Object|Stack]) ->
|
||||||
event({Type, Value}, [Array|Stack]) when is_list(Array) ->
|
event({Type, Value}, [Array|Stack]) when is_list(Array) ->
|
||||||
[[?MODULE:Type(Value)] ++ Array] ++ Stack;
|
[[?MODULE:Type(Value)] ++ Array] ++ Stack;
|
||||||
|
|
||||||
event(completed_parse, [Stack]) ->
|
event(end_of_stream, [Stack]) ->
|
||||||
Stack.
|
Stack.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ jsx_event({Type, Value}, {Acc, Indent, Level, new}) ->
|
||||||
jsx_event({Type, Value}, {Acc, Indent, Level, key}) ->
|
jsx_event({Type, Value}, {Acc, Indent, Level, key}) ->
|
||||||
{Acc ++ format(Type, Value), Indent, Level, value};
|
{Acc ++ format(Type, Value), Indent, Level, value};
|
||||||
|
|
||||||
jsx_event(completed_parse, {Acc, _, _, _}) ->
|
jsx_event(end_of_stream, {Acc, _, _, _}) ->
|
||||||
Acc.
|
Acc.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ event({key, "_id"}, 1) ->
|
||||||
event({string, String}, capture) ->
|
event({string, String}, capture) ->
|
||||||
throw({ok, String});
|
throw({ok, String});
|
||||||
|
|
||||||
event(completed_parse, _) ->
|
event(end_of_stream, _) ->
|
||||||
throw(not_found);
|
throw(not_found);
|
||||||
|
|
||||||
event(_, Level) ->
|
event(_, Level) ->
|
||||||
|
|
16
src/jsx.erl
16
src/jsx.erl
|
@ -91,7 +91,7 @@ decoder() ->
|
||||||
decoder([]).
|
decoder([]).
|
||||||
|
|
||||||
decoder(Opts) ->
|
decoder(Opts) ->
|
||||||
F = fun(completed_parse, State) -> lists:reverse(State) ;(Event, State) -> [Event] ++ State end,
|
F = fun(end_of_stream, State) -> lists:reverse(State) ;(Event, State) -> [Event] ++ State end,
|
||||||
decoder({F, []}, Opts).
|
decoder({F, []}, Opts).
|
||||||
|
|
||||||
decoder({F, _} = Callbacks, OptsList) when is_list(OptsList), is_function(F) ->
|
decoder({F, _} = Callbacks, OptsList) when is_list(OptsList), is_function(F) ->
|
||||||
|
@ -166,7 +166,7 @@ maybe_done(<<?comma, Rest/binary>>, [array|_] = Stack, Callbacks, Opts) ->
|
||||||
maybe_done(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts)) ->
|
maybe_done(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts)) ->
|
||||||
maybe_comment(Rest, fun(Resume) -> maybe_done(Resume, Stack, Callbacks, Opts) end);
|
maybe_comment(Rest, fun(Resume) -> maybe_done(Resume, Stack, Callbacks, Opts) end);
|
||||||
maybe_done(<<>>, [], Callbacks, Opts) ->
|
maybe_done(<<>>, [], Callbacks, Opts) ->
|
||||||
{fold(completed_parse, Callbacks), fun(Stream) -> maybe_done(Stream, [], Callbacks, Opts) end};
|
{fold(end_of_stream, Callbacks), fun(Stream) -> maybe_done(Stream, [], Callbacks, Opts) end};
|
||||||
maybe_done(<<>>, Stack, Callbacks, Opts) ->
|
maybe_done(<<>>, Stack, Callbacks, Opts) ->
|
||||||
{incomplete, fun(Stream) -> maybe_done(Stream, Stack, Callbacks, Opts) end}.
|
{incomplete, fun(Stream) -> maybe_done(Stream, Stack, Callbacks, Opts) end}.
|
||||||
|
|
||||||
|
@ -364,7 +364,7 @@ zero(<<S, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespace(S) ->
|
||||||
zero(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts), Acc) ->
|
zero(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts), Acc) ->
|
||||||
maybe_comment(Rest, fun(Resume) -> zero(Resume, Stack, Callbacks, Opts, Acc) end);
|
maybe_comment(Rest, fun(Resume) -> zero(Resume, Stack, Callbacks, Opts, Acc) end);
|
||||||
zero(<<>>, [], Callbacks, Opts, Acc) ->
|
zero(<<>>, [], Callbacks, Opts, Acc) ->
|
||||||
{fold(completed_parse, fold({number, lists:reverse(Acc)}, Callbacks)),
|
{fold(end_of_stream, fold({number, lists:reverse(Acc)}, Callbacks)),
|
||||||
fun(Stream) -> zero(Stream, [], Callbacks, Opts, Acc) end};
|
fun(Stream) -> zero(Stream, [], Callbacks, Opts, Acc) end};
|
||||||
zero(<<>>, Stack, Callbacks, Opts, Acc) ->
|
zero(<<>>, Stack, Callbacks, Opts, Acc) ->
|
||||||
{incomplete, fun(Stream) -> zero(Stream, Stack, Callbacks, Opts, Acc) end}.
|
{incomplete, fun(Stream) -> zero(Stream, Stack, Callbacks, Opts, Acc) end}.
|
||||||
|
@ -393,7 +393,7 @@ integer(<<S, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespace(S)
|
||||||
integer(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts), Acc) ->
|
integer(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts), Acc) ->
|
||||||
maybe_comment(Rest, fun(Resume) -> integer(Resume, Stack, Callbacks, Opts, Acc) end);
|
maybe_comment(Rest, fun(Resume) -> integer(Resume, Stack, Callbacks, Opts, Acc) end);
|
||||||
integer(<<>>, [], Callbacks, Opts, Acc) ->
|
integer(<<>>, [], Callbacks, Opts, Acc) ->
|
||||||
{fold(completed_parse, fold({number, lists:reverse(Acc)}, Callbacks)),
|
{fold(end_of_stream, fold({number, lists:reverse(Acc)}, Callbacks)),
|
||||||
fun(Stream) -> integer(Stream, [], Callbacks, Opts, Acc) end};
|
fun(Stream) -> integer(Stream, [], Callbacks, Opts, Acc) end};
|
||||||
integer(<<>>, Stack, Callbacks, Opts, Acc) ->
|
integer(<<>>, Stack, Callbacks, Opts, Acc) ->
|
||||||
{incomplete, fun(Stream) -> integer(Stream, Stack, Callbacks, Opts, Acc) end}.
|
{incomplete, fun(Stream) -> integer(Stream, Stack, Callbacks, Opts, Acc) end}.
|
||||||
|
@ -419,7 +419,7 @@ fraction(<<S, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespace(S)
|
||||||
fraction(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts), Acc) ->
|
fraction(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts), Acc) ->
|
||||||
maybe_comment(Rest, fun(Resume) -> fraction(Resume, Stack, Callbacks, Opts, Acc) end);
|
maybe_comment(Rest, fun(Resume) -> fraction(Resume, Stack, Callbacks, Opts, Acc) end);
|
||||||
fraction(<<>>, [], Callbacks, Opts, Acc) ->
|
fraction(<<>>, [], Callbacks, Opts, Acc) ->
|
||||||
{fold(completed_parse, fold({number, lists:reverse(Acc)}, Callbacks)),
|
{fold(end_of_stream, fold({number, lists:reverse(Acc)}, Callbacks)),
|
||||||
fun(Stream) -> fraction(Stream, [], Callbacks, Opts, Acc) end};
|
fun(Stream) -> fraction(Stream, [], Callbacks, Opts, Acc) end};
|
||||||
fraction(<<>>, Stack, Callbacks, Opts, Acc) ->
|
fraction(<<>>, Stack, Callbacks, Opts, Acc) ->
|
||||||
{incomplete, fun(Stream) -> fraction(Stream, Stack, Callbacks, Opts, Acc) end}.
|
{incomplete, fun(Stream) -> fraction(Stream, Stack, Callbacks, Opts, Acc) end}.
|
||||||
|
@ -456,7 +456,7 @@ exp(<<?solidus, Rest/binary>>, Stack, Callbacks, ?comments_true(Opts), Acc) ->
|
||||||
exp(<<S, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespace(S) ->
|
exp(<<S, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespace(S) ->
|
||||||
maybe_done(Rest, Stack, fold({number, lists:reverse(Acc)}, Callbacks), Opts);
|
maybe_done(Rest, Stack, fold({number, lists:reverse(Acc)}, Callbacks), Opts);
|
||||||
exp(<<>>, [], Callbacks, Opts, Acc) ->
|
exp(<<>>, [], Callbacks, Opts, Acc) ->
|
||||||
{fold(completed_parse, fold({number, lists:reverse(Acc)}, Callbacks)),
|
{fold(end_of_stream, fold({number, lists:reverse(Acc)}, Callbacks)),
|
||||||
fun(Stream) -> exp(Stream, [], Callbacks, Opts, Acc) end};
|
fun(Stream) -> exp(Stream, [], Callbacks, Opts, Acc) end};
|
||||||
exp(<<>>, Stack, Callbacks, Opts, Acc) ->
|
exp(<<>>, Stack, Callbacks, Opts, Acc) ->
|
||||||
{incomplete, fun(Stream) -> exp(Stream, Stack, Callbacks, Opts, Acc) end}.
|
{incomplete, fun(Stream) -> exp(Stream, Stack, Callbacks, Opts, Acc) end}.
|
||||||
|
@ -551,8 +551,8 @@ maybe_comment_done(<<>>, Resume) ->
|
||||||
%% callbacks to our handler are roughly equivalent to a fold over the events, incremental
|
%% callbacks to our handler are roughly equivalent to a fold over the events, incremental
|
||||||
%% rather than all at once.
|
%% rather than all at once.
|
||||||
|
|
||||||
fold(completed_parse, {F, State}) ->
|
fold(end_of_stream, {F, State}) ->
|
||||||
F(completed_parse, State);
|
F(end_of_stream, State);
|
||||||
fold(Event, {F, State}) when is_function(F) ->
|
fold(Event, {F, State}) when is_function(F) ->
|
||||||
{F, F(Event, State)}.
|
{F, F(Event, State)}.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue