浏览代码

Improve recursive display of dictionary values

pull/984/head
Serge Aleynikov 9 年前
父节点
当前提交
ce1dba7f43
共有 1 个文件被更改,包括 14 次插入7 次删除
  1. +14
    -7
      src/rebar_state.erl

+ 14
- 7
src/rebar_state.erl 查看文件

@ -407,14 +407,21 @@ create_logic_providers(ProviderModules, State0) ->
throw({error, "Failed creating providers. Run with DEBUG=1 for stacktrace."})
end.
to_list(#state_t{opts=O, code_paths=CP, default=D} = State) ->
O1 = dict:to_list(O),
CP1 = dict:to_list(CP),
D1 = dict:to_list(D),
State1 = State#state_t{opts=O1, code_paths=CP1, default=D1},
to_list(#state_t{} = State) ->
Fields = record_info(fields, state_t),
Values = tl(tuple_to_list(State1)),
lists:zip(Fields, Values).
Values = tl(tuple_to_list(State)),
DictSz = tuple_size(dict:new()),
Fun = fun
F({K,V}) when is_list(V) ->
{K, [F(I) || I <- V]};
F(V) when is_tuple(V), element(1,V) =:= dict, tuple_size(V) =:= DictSz ->
[F(I) || I <- dict:to_list(V)];
F({K,V}) when is_tuple(V), element(1,V) =:= dict, tuple_size(V) =:= DictSz ->
{K, [F(I) || I <- dict:to_list(V)]};
F(Other) ->
Other
end,
lists:zip(Fields, [Fun(I) || I <- Values]).
%% ===================================================================
%% Internal functions

正在加载...
取消
保存