Skip to content

Commit 43b04fe

Browse files
committed
implemented rabbit_misc:pmerge to manage default values in proplists
1 parent 758fd67 commit 43b04fe

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/rabbit_misc.erl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
-export([const/1]).
5555
-export([ntoa/1, ntoab/1]).
5656
-export([is_process_alive/1]).
57-
-export([pget/2, pget/3, pget_or_die/2, pset/3]).
57+
-export([pget/2, pget/3, pget_or_die/2, pmerge/3, pset/3]).
5858
-export([format_message_queue/2]).
5959
-export([append_rpc_all_nodes/4]).
6060
-export([os_cmd/1]).
@@ -227,6 +227,7 @@
227227
-spec(pget/2 :: (term(), [term()]) -> term()).
228228
-spec(pget/3 :: (term(), [term()], term()) -> term()).
229229
-spec(pget_or_die/2 :: (term(), [term()]) -> term() | no_return()).
230+
-spec(pmerge/3 :: (term(), term(), [term()]) -> term()).
230231
-spec(pset/3 :: (term(), term(), [term()]) -> term()).
231232
-spec(format_message_queue/2 :: (any(), priority_queue:q()) -> term()).
232233
-spec(append_rpc_all_nodes/4 :: ([node()], atom(), atom(), [any()]) -> [any()]).
@@ -882,6 +883,12 @@ pget_or_die(K, P) ->
882883
V -> V
883884
end.
884885

886+
pmerge(Key, Val, List) ->
887+
case proplists:is_defined(Key, List) of
888+
true -> List;
889+
_ -> [{Key, Val} | List]
890+
end.
891+
885892
pset(Key, Value, List) -> [{Key, Value} | proplists:delete(Key, List)].
886893

887894
format_message_queue(_Opt, MQ) ->

test/src/rabbit_tests.erl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ all_tests0() ->
5555
passed = test_priority_queue(),
5656
passed = test_pg_local(),
5757
passed = test_unfold(),
58+
passed = test_pmerge(),
5859
passed = test_supervisor_delayed_restart(),
5960
passed = test_table_codec(),
6061
passed = test_content_framing(),
@@ -423,6 +424,12 @@ test_unfold() ->
423424
end, 10),
424425
passed.
425426

427+
test_pmerge() ->
428+
P = [{a, 1}, {b, 2}],
429+
P = rabbit_misc:pmerge(a, 3, P),
430+
[{c, 3} | P] = rabbit_misc:pmerge(c, 3, P),
431+
passed.
432+
426433
test_table_codec() ->
427434
%% FIXME this does not test inexact numbers (double and float) yet,
428435
%% because they won't pass the equality assertions

0 commit comments

Comments
 (0)