home
/
code
/
hope.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use empty tuple as unit type, for all side-effects.
[hope.git]
/
src
/
hope_kv_list.erl
diff --git
a/src/hope_kv_list.erl
b/src/hope_kv_list.erl
index
7b25797
..
6e3442d
100644
(file)
--- a/
src/hope_kv_list.erl
+++ b/
src/hope_kv_list.erl
@@
-13,8
+13,9
@@
-export(
[ empty/0
-export(
[ empty/0
- , get/2
- , get/3
+ , get/2 % get option
+ , get/3 % get existing or default
+ , get/4 % get existing if valid, or default
, set/3
, update/3
, pop/2
, set/3
, update/3
, pop/2
@@
-24,6
+25,7
@@
, fold/3
, of_kv_list/1
, to_kv_list/1
, fold/3
, of_kv_list/1
, to_kv_list/1
+ , has_key/2
, find_unique_presence_violations/2 % No optional keys
, find_unique_presence_violations/3 % Specify optional keys
, validate_unique_presence/2 % No optional keys
, find_unique_presence_violations/2 % No optional keys
, find_unique_presence_violations/3 % Specify optional keys
, validate_unique_presence/2 % No optional keys
@@
-75,6
+77,13
@@
get(T, K, Default) ->
Vopt = get(T, K),
hope_option:get(Vopt, Default).
Vopt = get(T, K),
hope_option:get(Vopt, Default).
+-spec get(t(K, V), K, V, fun((V) -> boolean())) ->
+ V.
+get(T, K, Default, IsValid) ->
+ VOpt1 = get(T, K),
+ VOpt2 = hope_option:validate(VOpt1, IsValid),
+ hope_option:get(VOpt2, Default).
+
-spec set(t(K, V), K, V) ->
t(K, V).
set(T, K, V) ->
-spec set(t(K, V), K, V) ->
t(K, V).
set(T, K, V) ->
@@
-96,11
+105,12
@@
pop(T1, K) ->
; false -> {none , T1}
end.
; false -> {none , T1}
end.
--spec iter(t(K, V), fun((K, V) ->
ok
)) ->
-
ok
.
+-spec iter(t(K, V), fun((K, V) ->
any()
)) ->
+
{}
.
iter(T, F1) ->
F2 = lift_map(F1),
iter(T, F1) ->
F2 = lift_map(F1),
- lists:foreach(F2, T).
+ ok = lists:foreach(F2, T),
+ {}.
-spec map(t(K, V), fun((K, V) -> V)) ->
t(K, V).
-spec map(t(K, V), fun((K, V) -> V)) ->
t(K, V).
@@
-198,6
+208,10
@@
presence_violations_to_list(#hope_kv_list_presence_violations
end,
ErrorDups ++ ErrorMissing ++ ErrorUnsupported.
end,
ErrorDups ++ ErrorMissing ++ ErrorUnsupported.
+-spec has_key(t(K, _), K) ->
+ boolean().
+has_key(T, K1) ->
+ lists:any(fun ({K2, _}) -> K1 =:= K2 end, T).
%% ============================================================================
%% Helpers
%% ============================================================================
%% Helpers
This page took
0.023968 seconds
and
4
git commands to generate.