diff options
| author | Giuseppe Privitera <priviterag@gmail.com> | 2015-09-02 09:24:56 +0100 |
|---|---|---|
| committer | Giuseppe Privitera <priviterag@gmail.com> | 2015-09-03 10:08:56 +0100 |
| commit | f1377540aa410eb26a2f8e7fae489044d6636b7b (patch) | |
| tree | 46a6d4d6f0ea6832c83aac66c3b538699ba8a918 | |
| parent | 43b04fee5990f23d28cefdd5ecf67b4fc1c05297 (diff) | |
| download | rabbitmq-server-git-f1377540aa410eb26a2f8e7fae489044d6636b7b.tar.gz | |
implemented rabbit_misc:plmerge/2 to merge property lists
| -rw-r--r-- | src/rabbit_misc.erl | 10 | ||||
| -rw-r--r-- | test/src/rabbit_tests.erl | 7 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index a781f18895..b45d600217 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -54,7 +54,7 @@ -export([const/1]). -export([ntoa/1, ntoab/1]). -export([is_process_alive/1]). --export([pget/2, pget/3, pget_or_die/2, pmerge/3, pset/3]). +-export([pget/2, pget/3, pget_or_die/2, pmerge/3, pset/3, plmerge/2]). -export([format_message_queue/2]). -export([append_rpc_all_nodes/4]). -export([os_cmd/1]). @@ -228,6 +228,7 @@ -spec(pget/3 :: (term(), [term()], term()) -> term()). -spec(pget_or_die/2 :: (term(), [term()]) -> term() | no_return()). -spec(pmerge/3 :: (term(), term(), [term()]) -> term()). +-spec(plmerge/2 :: ([term()], [term()]) -> term()). -spec(pset/3 :: (term(), term(), [term()]) -> term()). -spec(format_message_queue/2 :: (any(), priority_queue:q()) -> term()). -spec(append_rpc_all_nodes/4 :: ([node()], atom(), atom(), [any()]) -> [any()]). @@ -883,12 +884,19 @@ pget_or_die(K, P) -> V -> V end. +%% property merge pmerge(Key, Val, List) -> case proplists:is_defined(Key, List) of true -> List; _ -> [{Key, Val} | List] end. +%% proplists merge +plmerge(P1, P2) -> + K1 = proplists:get_keys(P1), + K2 = proplists:get_keys(P2), + P1 ++ [X || {K, _} = X <- P2, lists:member(K, K2 -- K1)]. + pset(Key, Value, List) -> [{Key, Value} | proplists:delete(Key, List)]. format_message_queue(_Opt, MQ) -> diff --git a/test/src/rabbit_tests.erl b/test/src/rabbit_tests.erl index a7435a3860..188222057b 100644 --- a/test/src/rabbit_tests.erl +++ b/test/src/rabbit_tests.erl @@ -56,6 +56,7 @@ all_tests0() -> passed = test_pg_local(), passed = test_unfold(), passed = test_pmerge(), + passed = test_plmerge(), passed = test_supervisor_delayed_restart(), passed = test_table_codec(), passed = test_content_framing(), @@ -430,6 +431,12 @@ test_pmerge() -> [{c, 3} | P] = rabbit_misc:pmerge(c, 3, P), passed. +test_plmerge() -> + P1 = [{a, 1}, {b, 2}, {c, 3}], + P2 = [{a, 2}, {d, 4}], + [{a, 1}, {b, 2}, {c, 3}, {d, 4}] = rabbit_misc:plmerge(P1, P2), + passed. + test_table_codec() -> %% FIXME this does not test inexact numbers (double and float) yet, %% because they won't pass the equality assertions |
