format/2 handles naked values

This commit is contained in:
alisdair sullivan 2011-10-25 20:08:46 -07:00
parent 7a56f72b7c
commit 1a9d1908f0
2 changed files with 11 additions and 3 deletions

View file

@ -84,8 +84,7 @@ start([{literal, Atom}], [], [], _Opts)
%% third parameter is a stack to match end_foos to start_foos %% third parameter is a stack to match end_foos to start_foos
start(Forms, [], [], Opts) when is_list(Forms) -> start(Forms, [], [], Opts) when is_list(Forms) ->
list_or_object(Forms, [], [], Opts); list_or_object(Forms, [], [], Opts);
start(Forms, T, Stack, Opts) -> start(Forms, T, Stack, Opts) -> ?error([Forms, T, Stack, Opts]).
?error([Forms, T, Stack, Opts]).
list_or_object([start_object|Forms], T, Stack, Opts) -> list_or_object([start_object|Forms], T, Stack, Opts) ->

View file

@ -83,7 +83,8 @@ extract_parser_opts([K|Rest], Acc) ->
fold(Event, {start, Acc, Opts}) -> fold(Event, {start, Acc, Opts}) ->
case Event of case Event of
start_object -> {[object_start], [Acc, ?start_object], Opts} {Type, Value} -> {[], [Acc, encode(Type, Value)], Opts}
; start_object -> {[object_start], [Acc, ?start_object], Opts}
; start_array -> {[array_start], [Acc, ?start_array], Opts} ; start_array -> {[array_start], [Acc, ?start_array], Opts}
end; end;
fold(Event, {[object_start|Stack], Acc, Opts}) -> fold(Event, {[object_start|Stack], Acc, Opts}) ->
@ -154,18 +155,26 @@ basic_test_() ->
[ [
{"empty object", ?_assert(format(<<"{}">>, []) =:= <<"{}">>)}, {"empty object", ?_assert(format(<<"{}">>, []) =:= <<"{}">>)},
{"empty array", ?_assert(format(<<"[]">>, []) =:= <<"[]">>)}, {"empty array", ?_assert(format(<<"[]">>, []) =:= <<"[]">>)},
{"naked integer", ?_assert(format([{integer, 123}], []) =:= <<"123">>)},
{"naked float", ?_assert(format([{float, 1.23}], []) =:= <<"1.23">>)},
{"naked string", ?_assert(format(<<"\"hi\"">>, []) =:= <<"\"hi\"">>)},
{"naked literal", ?_assert(format(<<"true">>, []) =:= <<"true">>)},
{"simple object", {"simple object",
?_assert(format(<<" { \"key\" :\n\t \"value\"\r\r\r\n } ">>, ?_assert(format(<<" { \"key\" :\n\t \"value\"\r\r\r\n } ">>,
[] []
) =:= <<"{\"key\":\"value\"}">> ) =:= <<"{\"key\":\"value\"}">>
) )
}, },
{"really simple object",
?_assert(format(<<"{\"k\":\"v\"}">>, []) =:= <<"{\"k\":\"v\"}">>)
},
{"simple array", {"simple array",
?_assert(format(<<" [\n\ttrue,\n\tfalse , \n \tnull\n] ">>, ?_assert(format(<<" [\n\ttrue,\n\tfalse , \n \tnull\n] ">>,
[] []
) =:= <<"[true,false,null]">> ) =:= <<"[true,false,null]">>
) )
}, },
{"really simple array", ?_assert(format(<<"[1]">>, []) =:= <<"[1]">>)},
{"nested structures", {"nested structures",
?_assert(format( ?_assert(format(
<<"[{\"key\":\"value\", <<"[{\"key\":\"value\",