From 1a9d1908f0194a15505f9acf29e7f4c8198a9d06 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Tue, 25 Oct 2011 20:08:46 -0700 Subject: [PATCH] format/2 handles naked values --- src/jsx_encoder.erl | 3 +-- src/jsx_format.erl | 11 ++++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/jsx_encoder.erl b/src/jsx_encoder.erl index 04d1d72..5d0d373 100644 --- a/src/jsx_encoder.erl +++ b/src/jsx_encoder.erl @@ -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) -> diff --git a/src/jsx_format.erl b/src/jsx_format.erl index 8634772..e9d44ca 100644 --- a/src/jsx_format.erl +++ b/src/jsx_format.erl @@ -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\",