From d49aa21366e6b77b2a0eeec8c7fc7b71b75f157e Mon Sep 17 00:00:00 2001 From: Tobias Engel Date: Thu, 13 Jun 2013 11:16:57 +0200 Subject: handle non-tuple return value of TupleCB --- src/osmo_util.erl | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/osmo_util.erl b/src/osmo_util.erl index b8ef242..d4fb5b0 100644 --- a/src/osmo_util.erl +++ b/src/osmo_util.erl @@ -107,10 +107,15 @@ tuple_walk(Tpl, TupleCb, Args) when is_tuple(Tpl), is_function(TupleCb), tuple_walk(Path, Tpl, TupleCb, Args) when is_list(Path), is_tuple(Tpl), is_list(Args) -> % call Callback - NewTpl = TupleCb(Path, Tpl, Args), - [TplName|TplList] = tuple_to_list(NewTpl), - NewTplList = tuple_fieldlist_walk(Path, TplName, TplList, TupleCb, Args), - list_to_tuple([TplName|NewTplList]); + RetVal = TupleCb(Path, Tpl, Args), + if + is_tuple(RetVal) -> + [TplName|TplList] = tuple_to_list(RetVal), + NewTplList = tuple_fieldlist_walk(Path, TplName, TplList, TupleCb, Args), + list_to_tuple([TplName|NewTplList]); + true -> + RetVal + end; tuple_walk(Path, TplL, TupleCb, Args) when is_list(Path), is_list(TplL), is_list(Args) -> tuple_walk_list(Path, TplL, TupleCb, Args, []). -- cgit v1.2.3