apply escape_forward_slash option to decoding as well as encoding
This commit is contained in:
parent
e3c883457f
commit
e36858d1ba
3 changed files with 18 additions and 7 deletions
|
@ -1 +1 @@
|
||||||
["\"", "\\", "\/", "\b", "\f", "\n", "\r", "\t"]
|
["\"", "\\", "\b", "\f", "\n", "\r", "\t"]
|
|
@ -2,7 +2,6 @@
|
||||||
{jsx, [start_array,
|
{jsx, [start_array,
|
||||||
{string,<<"\"">>},
|
{string,<<"\"">>},
|
||||||
{string,<<"\\">>},
|
{string,<<"\\">>},
|
||||||
{string,<<"/">>},
|
|
||||||
{string,<<"\b">>},
|
{string,<<"\b">>},
|
||||||
{string,<<"\f">>},
|
{string,<<"\f">>},
|
||||||
{string,<<"\n">>},
|
{string,<<"\n">>},
|
||||||
|
|
|
@ -348,13 +348,16 @@ escape(<<$r, Rest/binary>>, Handler, [Acc|Stack], Opts) ->
|
||||||
string(Rest, Handler, [?acc_seq(Acc, $\r)|Stack], Opts);
|
string(Rest, Handler, [?acc_seq(Acc, $\r)|Stack], Opts);
|
||||||
escape(<<$t, Rest/binary>>, Handler, [Acc|Stack], Opts) ->
|
escape(<<$t, Rest/binary>>, Handler, [Acc|Stack], Opts) ->
|
||||||
string(Rest, Handler, [?acc_seq(Acc, $\t)|Stack], Opts);
|
string(Rest, Handler, [?acc_seq(Acc, $\t)|Stack], Opts);
|
||||||
escape(<<$u, Rest/binary>>, Handler, Stack, Opts) ->
|
escape(<<?rsolidus, Rest/binary>>, Handler, [Acc|Stack], Opts) ->
|
||||||
escaped_unicode(Rest, Handler, [?new_seq()|Stack], Opts);
|
string(Rest, Handler, [?acc_seq(Acc, $\\)|Stack], Opts);
|
||||||
escape(<<S, Rest/binary>>, Handler, [Acc|Stack], Opts)
|
escape(<<?solidus, Rest/binary>>, Handler, [Acc|Stack], Opts=#opts{escape_forward_slash=true}) ->
|
||||||
when S =:= ?doublequote; S =:= ?solidus; S =:= ?rsolidus ->
|
string(Rest, Handler, [?acc_seq(Acc, $/)|Stack], Opts);
|
||||||
string(Rest, Handler, [?acc_seq(Acc, S)|Stack], Opts);
|
escape(<<?doublequote, Rest/binary>>, Handler, [Acc|Stack], Opts) ->
|
||||||
|
string(Rest, Handler, [?acc_seq(Acc, $\")|Stack], Opts);
|
||||||
escape(<<?singlequote, Rest/binary>>, Handler, [Acc|Stack], Opts = #opts{single_quotes=true}) ->
|
escape(<<?singlequote, Rest/binary>>, Handler, [Acc|Stack], Opts = #opts{single_quotes=true}) ->
|
||||||
string(Rest, Handler, [?acc_seq(Acc, ?singlequote)|Stack], Opts);
|
string(Rest, Handler, [?acc_seq(Acc, ?singlequote)|Stack], Opts);
|
||||||
|
escape(<<$u, Rest/binary>>, Handler, Stack, Opts) ->
|
||||||
|
escaped_unicode(Rest, Handler, [?new_seq()|Stack], Opts);
|
||||||
escape(<<>>, Handler, Stack, Opts) ->
|
escape(<<>>, Handler, Stack, Opts) ->
|
||||||
?incomplete(escape, <<>>, Handler, Stack, Opts);
|
?incomplete(escape, <<>>, Handler, Stack, Opts);
|
||||||
escape(Bin, Handler, Stack, Opts) ->
|
escape(Bin, Handler, Stack, Opts) ->
|
||||||
|
@ -1011,6 +1014,15 @@ comments_test_() ->
|
||||||
].
|
].
|
||||||
|
|
||||||
|
|
||||||
|
escape_forward_slash_test_() ->
|
||||||
|
[
|
||||||
|
{"escape forward slash test", ?_assertEqual(
|
||||||
|
decode(<<"[ \" \/ \" ]">>, [escape_forward_slash]),
|
||||||
|
[start_array, {string, <<" / ">>}, end_array, end_json]
|
||||||
|
)}
|
||||||
|
].
|
||||||
|
|
||||||
|
|
||||||
noncharacters_test_() ->
|
noncharacters_test_() ->
|
||||||
[
|
[
|
||||||
{"noncharacters - badjson",
|
{"noncharacters - badjson",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue