authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-05-27 10:47:53-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-05-27 20:56:48-07:00
log64c6a5092cc8910eb597e52b52e744de5e54ba7f
treea10787a545910c88c8eb274cc86280be51d170b4
parentdc3a192ae841706bb965218c68b0085bbec2b35e

std.Progress: elide root node if empty

when the root progress node has a zero length name, the sub-tree is flattened one layer, reducing visual noise, as well as bytes written to the terminal.

1 files changed, 9 insertions(+), 1 deletions(-)

lib/std/Progress.zig+9-1
...@@ -879,6 +879,11 @@ fn computePrefix(...@@ -879,6 +879,11 @@ fn computePrefix(
879 var i = start_i;879 var i = start_i;
880 const parent_index = serialized.parents[@intFromEnum(node_index)].unwrap() orelse return i;880 const parent_index = serialized.parents[@intFromEnum(node_index)].unwrap() orelse return i;
881 if (serialized.parents[@intFromEnum(parent_index)] == .none) return i;881 if (serialized.parents[@intFromEnum(parent_index)] == .none) return i;
882 if (@intFromEnum(serialized.parents[@intFromEnum(parent_index)]) == 0 and
883 serialized.storage[0].name[0] == 0)
884 {
885 return i;
886 }
882 i = computePrefix(buf, i, serialized, children, parent_index);887 i = computePrefix(buf, i, serialized, children, parent_index);
883 if (children[@intFromEnum(parent_index)].sibling == .none) {888 if (children[@intFromEnum(parent_index)].sibling == .none) {
884 const prefix = " ";889 const prefix = " ";
...@@ -917,7 +922,10 @@ fn computeNode(...@@ -917,7 +922,10 @@ fn computeNode(
917 const name = if (std.mem.indexOfScalar(u8, &storage.name, 0)) |end| storage.name[0..end] else &storage.name;922 const name = if (std.mem.indexOfScalar(u8, &storage.name, 0)) |end| storage.name[0..end] else &storage.name;
918 const parent = serialized.parents[@intFromEnum(node_index)];923 const parent = serialized.parents[@intFromEnum(node_index)];
919924
920 if (parent != .none) {925 if (parent != .none) p: {
926 if (@intFromEnum(parent) == 0 and serialized.storage[0].name[0] == 0) {
927 break :p;
928 }
921 if (children[@intFromEnum(node_index)].sibling == .none) {929 if (children[@intFromEnum(node_index)].sibling == .none) {
922 buf[i..][0..tree_langle.len].* = tree_langle.*;930 buf[i..][0..tree_langle.len].* = tree_langle.*;
923 i += tree_langle.len;931 i += tree_langle.len;