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
start(Forms, [], [], Opts) when is_list(Forms) ->
list_or_object(Forms, [], [], Opts);
start(Forms, T, Stack, Opts) ->
?error([Forms, T, Stack, Opts]).
start(Forms, T, Stack, Opts) -> ?error([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}) ->
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}
end;
fold(Event, {[object_start|Stack], Acc, Opts}) ->
@ -154,18 +155,26 @@ basic_test_() ->
[
{"empty object", ?_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",
?_assert(format(<<" { \"key\" :\n\t \"value\"\r\r\r\n } ">>,
[]
) =:= <<"{\"key\":\"value\"}">>
)
},
{"really simple object",
?_assert(format(<<"{\"k\":\"v\"}">>, []) =:= <<"{\"k\":\"v\"}">>)
},
{"simple array",
?_assert(format(<<" [\n\ttrue,\n\tfalse , \n \tnull\n] ">>,
[]
) =:= <<"[true,false,null]">>
)
},
{"really simple array", ?_assert(format(<<"[1]">>, []) =:= <<"[1]">>)},
{"nested structures",
?_assert(format(
<<"[{\"key\":\"value\",