Add dictionary get with validation. 3.5.0
authorSiraaj Khandkar <siraaj@khandkar.net>
Thu, 4 Jun 2015 22:19:48 +0000 (18:19 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Thu, 4 Jun 2015 22:19:48 +0000 (18:19 -0400)
src/hope.app.src
src/hope_gen_dictionary.erl
src/hope_kv_list.erl
test/hope_dictionary_SUITE.erl

index 41b038c..98c9de0 100644 (file)
@@ -1,7 +1,7 @@
 {application, hope,
  [
   {description, "Higher Order Programming in Erlang"},
-  {vsn, "3.4.0"},
+  {vsn, "3.5.0"},
   {registered, []},
   {applications, [
                   kernel,
index dda6eb0..1fab838 100644 (file)
@@ -18,6 +18,9 @@
 -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).
 
index 7b25797..cb1c4a4 100644 (file)
@@ -13,8 +13,9 @@
 
 -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
@@ -75,6 +76,13 @@ get(T, K, 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) ->
index 4f355ca..04e40d3 100644 (file)
@@ -63,7 +63,9 @@ t_get(Cfg) ->
     {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),
This page took 0.034103 seconds and 4 git commands to generate.