|
54 | 54 | -export([const/1]).
|
55 | 55 | -export([ntoa/1, ntoab/1]).
|
56 | 56 | -export([is_process_alive/1]).
|
57 |
| --export([pget/2, pget/3, pget_or_die/2, pmerge/3, pset/3]). |
| 57 | +-export([pget/2, pget/3, pget_or_die/2, pmerge/3, pset/3, plmerge/2]). |
58 | 58 | -export([format_message_queue/2]).
|
59 | 59 | -export([append_rpc_all_nodes/4]).
|
60 | 60 | -export([os_cmd/1]).
|
|
228 | 228 | -spec(pget/3 :: (term(), [term()], term()) -> term()).
|
229 | 229 | -spec(pget_or_die/2 :: (term(), [term()]) -> term() | no_return()).
|
230 | 230 | -spec(pmerge/3 :: (term(), term(), [term()]) -> term()).
|
| 231 | +-spec(plmerge/2 :: ([term()], [term()]) -> term()). |
231 | 232 | -spec(pset/3 :: (term(), term(), [term()]) -> term()).
|
232 | 233 | -spec(format_message_queue/2 :: (any(), priority_queue:q()) -> term()).
|
233 | 234 | -spec(append_rpc_all_nodes/4 :: ([node()], atom(), atom(), [any()]) -> [any()]).
|
@@ -883,12 +884,19 @@ pget_or_die(K, P) ->
|
883 | 884 | V -> V
|
884 | 885 | end.
|
885 | 886 |
|
| 887 | +%% property merge |
886 | 888 | pmerge(Key, Val, List) ->
|
887 | 889 | case proplists:is_defined(Key, List) of
|
888 | 890 | true -> List;
|
889 | 891 | _ -> [{Key, Val} | List]
|
890 | 892 | end.
|
891 | 893 |
|
| 894 | +%% proplists merge |
| 895 | +plmerge(P1, P2) -> |
| 896 | + K1 = proplists:get_keys(P1), |
| 897 | + K2 = proplists:get_keys(P2), |
| 898 | + P1 ++ [X || {K, _} = X <- P2, lists:member(K, K2 -- K1)]. |
| 899 | + |
892 | 900 | pset(Key, Value, List) -> [{Key, Value} | proplists:delete(Key, List)].
|
893 | 901 |
|
894 | 902 | format_message_queue(_Opt, MQ) ->
|
|
0 commit comments