diff options
author | Hans Bolinder <[email protected]> | 2018-04-20 12:19:12 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2018-04-25 16:25:22 +0200 |
commit | 872548b0c798e1e1fe9350d04c9460f3a6db5d41 (patch) | |
tree | 8eb26eba47a1cad7b37e7c75ea43c2f71bfc7bbd | |
parent | 29a347ffd408c68861a914db4efc75d8ea20a762 (diff) | |
download | otp-872548b0c798e1e1fe9350d04c9460f3a6db5d41.tar.gz otp-872548b0c798e1e1fe9350d04c9460f3a6db5d41.tar.bz2 otp-872548b0c798e1e1fe9350d04c9460f3a6db5d41.zip |
stdlib: Modify the printing of map associations with wWpP
Use the same depth for all (printed) elements of a map.
Since the order of keys can vary when printing a map--maps:iterator/1
and maps:next/1 are used--it is more consistent to print all
associations with the same depth.
If the associations printed are limited by the depth, the selection
of associations is arbitrary, as before.
-rw-r--r-- | lib/stdlib/src/io_lib.erl | 14 | ||||
-rw-r--r-- | lib/stdlib/src/io_lib_pretty.erl | 16 | ||||
-rw-r--r-- | lib/stdlib/test/io_SUITE.erl | 4 |
3 files changed, 18 insertions, 16 deletions
diff --git a/lib/stdlib/src/io_lib.erl b/lib/stdlib/src/io_lib.erl index 2624d420cc..3a5aba60b4 100644 --- a/lib/stdlib/src/io_lib.erl +++ b/lib/stdlib/src/io_lib.erl @@ -388,16 +388,16 @@ write_ref(Ref) -> erlang:ref_to_list(Ref). write_map(Map, D, E) when is_integer(D) -> - [$#,${,write_map_body(maps:to_list(Map), D, E),$}]. + [$#,${,write_map_body(maps:to_list(Map), D, D - 1, E),$}]. -write_map_body(_, 1, _E) -> "..."; -write_map_body([], _, _E) -> []; -write_map_body([{K,V}], D, E) -> write_map_assoc(K, V, D, E); -write_map_body([{K,V}|KVs], D, E) -> - [write_map_assoc(K, V, D, E),$, | write_map_body(KVs, D-1, E)]. +write_map_body(_, 1, _D0, _E) -> "..."; +write_map_body([], _, _D0, _E) -> []; +write_map_body([{K,V}], _D, D0, E) -> write_map_assoc(K, V, D0, E); +write_map_body([{K,V}|KVs], D, D0, E) -> + [write_map_assoc(K, V, D0, E),$, | write_map_body(KVs, D - 1, D0, E)]. write_map_assoc(K, V, D, E) -> - [write1(K, D - 1, E)," => ",write1(V, D-1, E)]. + [write1(K, D, E)," => ",write1(V, D, E)]. write_binary(B, D) when is_integer(D) -> {S, _} = write_binary(B, D, -1), diff --git a/lib/stdlib/src/io_lib_pretty.erl b/lib/stdlib/src/io_lib_pretty.erl index 2204231943..3d5a979b3e 100644 --- a/lib/stdlib/src/io_lib_pretty.erl +++ b/lib/stdlib/src/io_lib_pretty.erl @@ -596,21 +596,23 @@ print_length_map(Map, 1, _T, RF, Enc, Str) -> {"#{...}", 6, 3, More}; print_length_map(Map, D, T, RF, Enc, Str) when is_map(Map) -> Next = maps:next(maps:iterator(Map)), - PairsS = print_length_map_pairs(Next, D, tsub(T, 3), RF, Enc, Str), + PairsS = print_length_map_pairs(Next, D, D - 1, tsub(T, 3), RF, Enc, Str), {Len, Dots} = list_length(PairsS, 3, 0), {{map, PairsS}, Len, Dots, no_more}. -print_length_map_pairs(none, _D, _T, _RF, _Enc, _Str) -> +print_length_map_pairs(none, _D, _D0, _T, _RF, _Enc, _Str) -> []; -print_length_map_pairs(Term, D, T, RF, Enc, Str) when D =:= 1; T =:= 0-> - More = fun(T1, Dd) -> ?FUNCTION_NAME(Term, D+Dd, T1, RF, Enc, Str) end, +print_length_map_pairs(Term, D, D0, T, RF, Enc, Str) when D =:= 1; T =:= 0-> + More = fun(T1, Dd) -> + ?FUNCTION_NAME(Term, D+Dd, D0, T1, RF, Enc, Str) + end, {dots, 3, 3, More}; -print_length_map_pairs({K, V, Iter}, D, T, RF, Enc, Str) -> - Pair1 = print_length_map_pair(K, V, D - 1, tsub(T, 1), RF, Enc, Str), +print_length_map_pairs({K, V, Iter}, D, D0, T, RF, Enc, Str) -> + Pair1 = print_length_map_pair(K, V, D0, tsub(T, 1), RF, Enc, Str), {_, Len1, _, _} = Pair1, Next = maps:next(Iter), [Pair1 | - print_length_map_pairs(Next, D - 1, tsub(T, Len1+1), RF, Enc, Str)]. + print_length_map_pairs(Next, D - 1, D0, tsub(T, Len1+1), RF, Enc, Str)]. print_length_map_pair(K, V, D, T, RF, Enc, Str) -> {_, KL, KD, _} = P1 = print_length(K, D, T, RF, Enc, Str), diff --git a/lib/stdlib/test/io_SUITE.erl b/lib/stdlib/test/io_SUITE.erl index 609d0ad876..9f48fbf5e3 100644 --- a/lib/stdlib/test/io_SUITE.erl +++ b/lib/stdlib/test/io_SUITE.erl @@ -2441,7 +2441,7 @@ limit_term(_Config) -> {_, 1} = limt(T, 0), {_, 2} = limt(T, 1), {_, 2} = limt(T, 2), - {_, 1} = limt(T, 3), + {_, 2} = limt(T, 3), {_, 1} = limt(T, 4), T2 = #{[] => {},{} => []}, {_, 2} = limt(T2, 1), @@ -2542,7 +2542,7 @@ trunc_depth(D, Fun) -> "#{{[...],...} => {[...],...},...}" = Fun(M, D, 22), "#{{[...],...} => {[...],...},[...] => [...]}" = Fun(M, D, 31), "#{{[...],...} => {[...],...},[...] => [...]}" = Fun(M, D, 33), - "#{{[1|...],[...]} => {[1|...],[...]},[1|...] => [...]}" = + "#{{[1|...],[...]} => {[1|...],[...]},[1,2|...] => [...]}" = Fun(M, D, 50), "..." = Fun({c, 1, 2}, D, 0), |