Просмотр исходного кода

他のJSONライブラリに合わせてオブジェクトの表現形式を{object, []}から{[]}に変更

Takeru Ohta 11 лет назад
Родитель
Сommit
8b7749e921
6 измененных файлов с 17 добавлено и 17 удалено
  1. 2 2
      README.md
  2. 1 1
      src/jsone.app.src
  3. 2 2
      src/jsone_decode.erl
  4. 2 2
      src/jsone_encode.erl
  5. 4 4
      test/jsone_decode_tests.erl
  6. 6 6
      test/jsone_encode_tests.erl

+ 2 - 2
README.md

@@ -1,4 +1,4 @@
-jsone (0.1.2)
+jsone (0.2.0)
 =============
 
 Erlangで実装されたJSONのエンコード/デコードライブラリ。
@@ -44,7 +44,7 @@ API
 {[1,2,3],<<>>}                  % 返り値は {デコード結果, 未使用バイナリ} 形式
 
 > json:decode(<<"{\"1\":2}">>).
-{{object,[{<<"1">>,2}]},<<>>}   % オブジェクトは {object, [Key, Value]} 形式にデコードされる
+{{[{<<"1">>,2}]},<<>>}   % オブジェクトは {object, [Key, Value]} 形式にデコードされる
 
 %% エンコード
 > jsone:encode([1,2,3]).

+ 1 - 1
src/jsone.app.src

@@ -2,7 +2,7 @@
 {application, jsone,
  [
   {description, "Erlang JSON Library"},
-  {vsn, "0.1.2"},
+  {vsn, "0.2.0"},
   {registered, []},
   {applications, [
                   kernel,

+ 2 - 2
src/jsone_decode.erl

@@ -108,7 +108,7 @@ array_next(<<$,, Bin/binary>>, Values, Nexts, Buf) -> whitespace(Bin, value, [{a
 array_next(Bin,                Values, Nexts, Buf) -> error(badarg, [Bin, Values, Nexts, Buf]).
 
 -spec object(binary(), [next()], binary()) -> {jsone:json_value(), Rest::binary()}.
-object(<<$}, Bin/binary>>, Nexts, Buf) -> next(Bin, {object, []}, Nexts, Buf);
+object(<<$}, Bin/binary>>, Nexts, Buf) -> next(Bin, {[]}, Nexts, Buf);
 object(<<Bin/binary>>, Nexts, Buf) -> whitespace(Bin, string, [{object_value, []} | Nexts], Buf).
 
 -spec object_value(binary(), jsone:json_string(), jsone:json_object_members(), [next()], binary()) -> {jsone:json_value(), Rest::binary()}.
@@ -116,7 +116,7 @@ object_value(<<$:, Bin/binary>>, Key, Members, Nexts, Buf) -> whitespace(Bin, va
 object_value(Bin,                Key, Members, Nexts, Buf) -> error(badarg, [Bin, Key, Members, Nexts, Buf]).
 
 -spec object_next(binary(), jsone:json_object_members(), [next()], binary()) -> {jsone:json_value(), Rest::binary()}.
-object_next(<<$}, Bin/binary>>, Members, Nexts, Buf) -> next(Bin, {object, Members}, Nexts, Buf);
+object_next(<<$}, Bin/binary>>, Members, Nexts, Buf) -> next(Bin, {Members}, Nexts, Buf);
 object_next(<<$,, Bin/binary>>, Members, Nexts, Buf) -> whitespace(Bin, string, [{object_value, Members} | Nexts], Buf);
 object_next(Bin,                Members, Nexts, Buf) -> error(badarg, [Bin, Members, Nexts, Buf]).
 

+ 2 - 2
src/jsone_encode.erl

@@ -58,7 +58,7 @@ value(Value, Buf) when is_integer(Value) -> <<Buf/binary, (integer_to_binary(Val
 value(Value, Buf) when is_float(Value)   -> <<Buf/binary, (float_to_binary(Value))/binary>>;
 value(Value, Buf) when is_binary(Value)  -> string(Value, Buf);
 value(Value, Buf) when is_list(Value)    -> array(Value, Buf);
-value({object, _} = Value, Buf)          -> object(Value, Buf);
+value({_} = Value, Buf)                  -> object(Value, Buf);
 value(Value, Buf)                        -> error(badarg, [Value, Buf]).
 
 -spec string(jsone:json_string(), binary()) -> binary().
@@ -110,7 +110,7 @@ array_values([X | Xs], Buf) ->
     end.
 
 -spec object(jsone:json_object(), binary()) -> binary().
-object({object, Members}, Buf) ->
+object({Members}, Buf) ->
     object_members(Members, <<Buf/binary, ${>>).
 
 -spec object_members(jsone:json_object_members(), binary()) -> binary().

+ 4 - 4
test/jsone_decode_tests.erl

@@ -150,13 +150,13 @@ decode_test_() ->
      {"オブジェクトがデコード可能",
       fun () ->
               Input    = <<"{\"1\":2, \"key\":\"value\"}">>,
-              Expected = {object, [{<<"key">>, <<"value">>}, {<<"1">>, 2}]},
+              Expected = {[{<<"key">>, <<"value">>}, {<<"1">>, 2}]},
               ?assertEqual({Expected, <<"">>}, jsone_decode:decode(Input))
       end},
      {"空オブジェクトがデコード可能",
       fun () ->
-              ?assertEqual({{object, []}, <<"">>}, jsone_decode:decode(<<"{}">>)),
-              ?assertEqual({{object, []}, <<"">>}, jsone_decode:decode(<<"{ \t\r\n}">>))
+              ?assertEqual({{[]}, <<"">>}, jsone_decode:decode(<<"{}">>)),
+              ?assertEqual({{[]}, <<"">>}, jsone_decode:decode(<<"{ \t\r\n}">>))
       end},
      {"オブジェクトの末尾のカンマは許容されない",
       fun () ->
@@ -194,7 +194,7 @@ decode_test_() ->
      {"複雑なデータがデコード可能",
       fun () ->
               Input    = <<"  [true, {\"1\" : 2, \"array\":[[[[1]]], {\"ab\":\"cd\"}, false]}, null]   ">>,
-              Expected = [true, {object, [{<<"array">>, [[[[1]]], {object, [{<<"ab">>, <<"cd">>}]}, false]}, {<<"1">>, 2}]}, null],
+              Expected = [true, {[{<<"array">>, [[[[1]]], {[{<<"ab">>, <<"cd">>}]}, false]}, {<<"1">>, 2}]}, null],
               ?assertEqual({Expected, <<"   ">>}, jsone_decode:decode(Input))
       end}
     ].

+ 6 - 6
test/jsone_encode_tests.erl

@@ -93,27 +93,27 @@ encode_test_() ->
      %% オブジェクト系
      {"オブジェクトがエンコード可能",
       fun () ->
-              Input    = {object, [{<<"key">>, <<"value">>}, {<<"1">>, 2}]},
+              Input    = {[{<<"key">>, <<"value">>}, {<<"1">>, 2}]},
               Expected = <<"{\"key\":\"value\",\"1\":2}">>,
               ?assertEqual(Expected, jsone_encode:encode(Input))
       end},
      {"空オブジェクトがエンコード可能",
       fun () ->
-              Input    = {object, []},
+              Input    = {[]},
               Expected = <<"{}">>,
               ?assertEqual(Expected, jsone_encode:encode(Input))
       end},
      {"オブジェクトのメンバのキーにはバイナリのみが使用可能",
       fun () ->
-              ?assertError(badarg, jsone_encode:encode({object, [{1, 2}]})),
-              ?assertError(badarg, jsone_encode:encode({object, [{"1", 2}]})),
-              ?assertError(badarg, jsone_encode:encode({object, [{true, 2}]}))
+              ?assertError(badarg, jsone_encode:encode({[{1, 2}]})),
+              ?assertError(badarg, jsone_encode:encode({[{"1", 2}]})),
+              ?assertError(badarg, jsone_encode:encode({[{true, 2}]}))
       end},
 
      %% その他
      {"複雑なデータがエンコード可能",
       fun () ->
-              Input    = [true, {object, [{<<"1">>, 2}, {<<"array">>, [[[[1]]], {object, [{<<"ab">>, <<"cd">>}]}, false]}]}, null],
+              Input    = [true, {[{<<"1">>, 2}, {<<"array">>, [[[[1]]], {[{<<"ab">>, <<"cd">>}]}, false]}]}, null],
               Expected = <<"[true,{\"1\":2,\"array\":[[[[1]]],{\"ab\":\"cd\"},false]},null]">>,
               ?assertEqual(Expected, jsone_encode:encode(Input))
       end},