diff --git a/web/CXM_web_arg_utils.anubis b/web/CXM_web_arg_utils.anubis index f33dd6e..8037ed2 100644 --- a/web/CXM_web_arg_utils.anubis +++ b/web/CXM_web_arg_utils.anubis @@ -29,23 +29,70 @@ public define One lwa <- [ w_arg . *lwa] . +define List(Web_arg) + _remove_web_arg + ( + List(Web_arg) lwa, + String arg_name + )= + if lwa is + { + [] then [], + [h . t] then + if h is web_arg(name, _) then + if name = arg_name then + t + else + [h . _remove_web_arg(t, arg_name)] + else + [h . _remove_web_arg(t, arg_name)] + } +. + public define One remove_web_arg ( Var(List(Web_arg)) lwa, String arg_name )= - lwa <- map_select((Web_arg w_arg) |-> if w_arg is web_arg(name, value) then if name = arg_name then failure else success(w_arg) else success(w_arg), *lwa) + lwa <- _remove_web_arg(*lwa, arg_name) +. + +define List(Web_arg) + _replace_web_arg + ( + List(Web_arg) lwa, + String arg_name, + String value + )= + if lwa is + { + [] then /*println("arg_name "+arg_name+" not found, add it");*/[web_arg(arg_name, value)], + [h . t] then + if h is web_arg(name, _) then + if name = arg_name then + [web_arg(name, value) . t] + else + [h . _replace_web_arg(t, arg_name, value)] + else + [h . _replace_web_arg(t, arg_name, value)] + } . public define One +/* replace the value of given web argument name in the list. Replace the value of the first found + * argument. + * If the web argument is not found, an entry is created for this WEB argument name with given + * value + */ replace_web_arg ( - Var(List(Web_arg)) lwa, - String arg_name, - String value + Var(List(Web_arg)) lwa, //current list of web argument + String arg_name, //web argument name to replace + String value //value to replace )= - lwa <- map_select((Web_arg w_arg) |-> if w_arg is web_arg(name, value) then if name = arg_name then success(web_arg(name, value)) else success(w_arg) else success(w_arg), *lwa) + //println("replace web arg name "+arg_name+" value "+value); + lwa <- _replace_web_arg(*lwa, arg_name, value) . -- libgit2 0.21.4