home
/
code
/
hope.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
352ddeb
)
Add dictionary get with validation.
3.5.0
author
Siraaj Khandkar
<siraaj@khandkar.net>
Thu, 4 Jun 2015 22:19:48 +0000
(18:19 -0400)
committer
Siraaj Khandkar
<siraaj@khandkar.net>
Thu, 4 Jun 2015 22:19:48 +0000
(18:19 -0400)
src/hope.app.src
patch
|
blob
|
blame
|
history
src/hope_gen_dictionary.erl
patch
|
blob
|
blame
|
history
src/hope_kv_list.erl
patch
|
blob
|
blame
|
history
test/hope_dictionary_SUITE.erl
patch
|
blob
|
blame
|
history
diff --git
a/src/hope.app.src
b/src/hope.app.src
index
41b038c
..
98c9de0
100644
(file)
--- a/
src/hope.app.src
+++ b/
src/hope.app.src
@@
-1,7
+1,7
@@
{application, hope,
[
{description, "Higher Order Programming in Erlang"},
{application, hope,
[
{description, "Higher Order Programming in Erlang"},
- {vsn, "3.
4
.0"},
+ {vsn, "3.
5
.0"},
{registered, []},
{applications, [
kernel,
{registered, []},
{applications, [
kernel,
diff --git
a/src/hope_gen_dictionary.erl
b/src/hope_gen_dictionary.erl
index
dda6eb0
..
1fab838
100644
(file)
--- a/
src/hope_gen_dictionary.erl
+++ b/
src/hope_gen_dictionary.erl
@@
-18,6
+18,9
@@
-callback get(t(K, V), K, V) ->
V.
-callback get(t(K, V), K, V) ->
V.
+-callback get(t(K, V), K, V, fun((V) -> boolean())) ->
+ V.
+
-callback set(t(K, V), K, V) ->
t(K, V).
-callback set(t(K, V), K, V) ->
t(K, V).
diff --git
a/src/hope_kv_list.erl
b/src/hope_kv_list.erl
index
7b25797
..
cb1c4a4
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
@@
-75,6
+76,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) ->
diff --git
a/test/hope_dictionary_SUITE.erl
b/test/hope_dictionary_SUITE.erl
index
4f355ca
..
04e40d3
100644
(file)
--- a/
test/hope_dictionary_SUITE.erl
+++ b/
test/hope_dictionary_SUITE.erl
@@
-63,7
+63,9
@@
t_get(Cfg) ->
{some, V1} = DictModule:get(D, K1),
V1 = DictModule:get(D, K1, V2),
none = DictModule:get(D, K2),
{some, V1} = DictModule:get(D, K1),
V1 = DictModule:get(D, K1, V2),
none = DictModule:get(D, K2),
- V2 = DictModule:get(D, K2, V2).
+ V2 = DictModule:get(D, K2, V2),
+ default = DictModule:get(D, K1, default, fun (X) -> X =:= foo end),
+ V1 = DictModule:get(D, K1, default, fun (X) -> X =:= V1 end).
t_set_new(Cfg) ->
{some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
t_set_new(Cfg) ->
{some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
This page took
0.033012 seconds
and
4
git commands to generate.