merge develop

This commit is contained in:
alisdair sullivan 2013-03-03 22:32:40 -08:00
commit 9148c04956
2 changed files with 15 additions and 22 deletions

View file

@ -295,7 +295,7 @@ string(<<?singlequote, Rest/binary>>, Handler, Acc, Stack, Config) ->
; [single_quote|S] ->
maybe_done(Rest, handle_event({string, end_seq(Acc)}, Handler, Config), S, Config)
; _ ->
string(Rest, Handler, acc_seq(Acc, maybe_replace(?singlequote, Config)), Stack, Config)
string(Rest, Handler, acc_seq(Acc, ?singlequote), Stack, Config)
end;
string(<<40, Rest/binary>>, Handler, Acc, Stack, Config) ->
string(Rest, Handler, acc_seq(Acc, 40), Stack, Config);
@ -622,12 +622,7 @@ unescape(<<$u, $d, A, B, C, ?rsolidus, Rest/binary>>, Handler, Acc, Stack, Confi
when (A == $8 orelse A == $9 orelse A == $a orelse A == $b) andalso
?is_hex(B), ?is_hex(C)
->
case is_partial_escape(Rest) of
true -> ?incomplete(string, <<?rsolidus, $u, $d, A, B, C, ?rsolidus, Rest/binary>>, Handler, Acc, Stack, Config);
false when Config#config.replaced_bad_utf8 ->
string(<<?rsolidus, Rest/binary>>, Handler, acc_seq(Acc, 16#fffd), Stack, Config);
false -> ?error(string, <<?rsolidus, $u, $d, A, B, C, ?rsolidus, Rest/binary>>, Handler, Acc, Stack, Config)
end;
?incomplete(string, <<?rsolidus, $u, $d, A, B, C, ?rsolidus, Rest/binary>>, Handler, Acc, Stack, Config);
unescape(<<$u, $d, A, B, C>>, Handler, Acc, Stack, Config)
when (A == $8 orelse A == $9 orelse A == $a orelse A == $b) andalso
?is_hex(B), ?is_hex(C)
@ -666,11 +661,6 @@ maybe_replace($\n, #config{escaped_strings=true}) -> [$\\, $n];
maybe_replace($\f, #config{escaped_strings=true}) -> [$\\, $f];
maybe_replace($\r, #config{escaped_strings=true}) -> [$\\, $r];
maybe_replace($\", #config{escaped_strings=true}) -> [$\\, $\"];
maybe_replace($', Config=#config{escaped_strings=true}) ->
case Config#config.single_quoted_strings of
true -> [$\\, $']
; false -> [$']
end;
maybe_replace($/, Config=#config{escaped_strings=true}) ->
case Config#config.escaped_forward_slashes of
true -> [$\\, $/]
@ -1211,6 +1201,14 @@ comments_test_() ->
[start_array, {literal, true}, end_array, end_json],
decode(<<"[ /* /* comment */ */ true ]">>, [comments])
)},
{"/**/ comment with /", ?_assertEqual(
[start_array, {literal, true}, end_array, end_json],
decode(<<"[ /* / */ true ]">>, [comments])
)},
{"/**/ comment with *", ?_assertEqual(
[start_array, {literal, true}, end_array, end_json],
decode(<<"[ /* * */ true ]">>, [comments])
)},
{"// comment with badutf", ?_assertEqual(
[start_array, {literal, true}, end_array, end_json],
decode(<<"[ // comment ", 16#00c0, " ", ?newline, "true]">>, [comments, replaced_bad_utf8])
@ -1218,6 +1216,10 @@ comments_test_() ->
{"/**/ comment with badutf", ?_assertEqual(
[start_array, {literal, true}, end_array, end_json],
decode(<<"[ /* comment ", 16#00c0, " */ true]">>, [comments, replaced_bad_utf8])
)},
{"/**/ comment with badutf preceeded by /", ?_assertEqual(
[start_array, {literal, true}, end_array, end_json],
decode(<<"[ /* comment /", 16#00c0, " */ true]">>, [comments, replaced_bad_utf8])
)}
].
@ -1776,10 +1778,6 @@ single_quoted_string_test_() ->
[{string, <<"quoth the raven, 'nevermore'">>}, end_json],
decode(<<39, "quoth the raven, \\'nevermore\\'", 39>>, [single_quoted_strings])
)},
{"escape single quote", ?_assertEqual(
[{string, <<"quoth the raven, \\'nevermore\\'">>}, end_json],
decode(<<39, "quoth the raven, \\'nevermore\\'", 39>>, [single_quoted_strings, escaped_strings])
)},
{"single quoted key", ?_assertEqual(
[start_object,
{key, <<"key">>}, {string, <<"value">>},

View file

@ -345,7 +345,7 @@ clean(<<35, Rest/binary>>, Acc, Config) -> clean(Rest, [35] ++ Acc, Config);
clean(<<36, Rest/binary>>, Acc, Config) -> clean(Rest, [36] ++ Acc, Config);
clean(<<37, Rest/binary>>, Acc, Config) -> clean(Rest, [37] ++ Acc, Config);
clean(<<38, Rest/binary>>, Acc, Config) -> clean(Rest, [38] ++ Acc, Config);
clean(<<39, Rest/binary>>, Acc, Config) -> clean(Rest, maybe_replace(39, Config) ++ Acc, Config);
clean(<<39, Rest/binary>>, Acc, Config) -> clean(Rest, [39] ++ Acc, Config);
clean(<<40, Rest/binary>>, Acc, Config) -> clean(Rest, [40] ++ Acc, Config);
clean(<<41, Rest/binary>>, Acc, Config) -> clean(Rest, [41] ++ Acc, Config);
clean(<<42, Rest/binary>>, Acc, Config) -> clean(Rest, [42] ++ Acc, Config);
@ -509,11 +509,6 @@ maybe_replace($\n, #config{escaped_strings=true}) -> [$n, $\\];
maybe_replace($\f, #config{escaped_strings=true}) -> [$f, $\\];
maybe_replace($\r, #config{escaped_strings=true}) -> [$r, $\\];
maybe_replace($\", #config{escaped_strings=true}) -> [$\", $\\];
maybe_replace($', Config=#config{escaped_strings=true}) ->
case Config#config.single_quoted_strings of
true -> [$', $\\]
; false -> [$']
end;
maybe_replace($/, Config=#config{escaped_strings=true}) ->
case Config#config.escaped_forward_slashes of
true -> [$/, $\\]