add get_key/1' to
jsx_to_json' and `jsx_to_term'
This commit is contained in:
parent
08673b144e
commit
70aebfc6ad
2 changed files with 35 additions and 3 deletions
|
@ -25,7 +25,7 @@
|
|||
|
||||
-export([to_json/2, format/2]).
|
||||
-export([init/1, handle_event/2]).
|
||||
-export([start_object/1, start_array/1, insert/2, insert/3, finish/1]).
|
||||
-export([start_object/1, start_array/1, finish/1, insert/2, insert/3, get_key/1]).
|
||||
|
||||
|
||||
-record(config, {
|
||||
|
@ -228,6 +228,11 @@ insert(Key, Value, {[{object, Object}|Rest], Config}) when is_binary(Key), is_bi
|
|||
insert(_, _, _) -> erlang:error(badarg).
|
||||
|
||||
|
||||
get_key({[{object, Key, _}|_], _}) -> {ok, Key};
|
||||
get_key(_) -> {error, nokey}.
|
||||
|
||||
|
||||
|
||||
%% eunit tests
|
||||
|
||||
-ifdef(TEST).
|
||||
|
@ -369,6 +374,18 @@ rep_manipulation_test_() ->
|
|||
{[{object, <<"\"key\"">>, <<"{">>}], #config{}},
|
||||
insert(<<"\"key\"">>, {[{object, <<"{">>}], #config{}})
|
||||
)},
|
||||
{"get current key", ?_assertEqual(
|
||||
{ok, key},
|
||||
get_key({[{object, key, <<"{">>}], #config{}})
|
||||
)},
|
||||
{"try to get non-key from object", ?_assertEqual(
|
||||
{error, nokey},
|
||||
get_key({[{object, <<"{">>}], #config{}})
|
||||
)},
|
||||
{"try to get key from array", ?_assertEqual(
|
||||
{error, nokey},
|
||||
get_key({[{array, <<"[">>}], #config{}})
|
||||
)},
|
||||
{"insert a value into an object", ?_assertEqual(
|
||||
{[{object, <<"{\"key\":true">>}], #config{}},
|
||||
insert(<<"true">>, {[{object, <<"\"key\"">>, <<"{">>}], #config{}})
|
||||
|
@ -419,4 +436,4 @@ handle_event_test_() ->
|
|||
].
|
||||
|
||||
|
||||
-endif.
|
||||
-endif.
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
-export([to_term/2]).
|
||||
-export([init/1, handle_event/2]).
|
||||
-export([start_object/1, start_array/1, finish/1, insert/2, insert/3]).
|
||||
-export([start_object/1, start_array/1, finish/1, insert/2, insert/3, get_key/1]).
|
||||
|
||||
|
||||
-record(config, {
|
||||
|
@ -144,6 +144,9 @@ insert(Key, Value, {[{object, Pairs}|Rest], Config}) ->
|
|||
insert(_, _, _) -> erlang:error(badarg).
|
||||
|
||||
|
||||
get_key({[{object, Key, _}|_], _}) -> {ok, Key};
|
||||
get_key(_) -> {error, nokey}.
|
||||
|
||||
|
||||
|
||||
%% eunit tests
|
||||
|
@ -212,6 +215,18 @@ rep_manipulation_test_() ->
|
|||
{[{object, key, []}, junk], #config{}},
|
||||
insert(key, {[{object, []}, junk], #config{}})
|
||||
)},
|
||||
{"get current key", ?_assertEqual(
|
||||
{ok, key},
|
||||
get_key({[{object, key, []}], #config{}})
|
||||
)},
|
||||
{"try to get non-key from object", ?_assertEqual(
|
||||
{error, nokey},
|
||||
get_key({[{object, []}], #config{}})
|
||||
)},
|
||||
{"try to get key from array", ?_assertEqual(
|
||||
{error, nokey},
|
||||
get_key({[{array, []}], #config{}})
|
||||
)},
|
||||
{"insert a value into an object", ?_assertEqual(
|
||||
{[{object, [{key, value}]}, junk], #config{}},
|
||||
insert(value, {[{object, key, []}, junk], #config{}})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue