use std.runtime; use std.io; use std.unix; var files = func(path) { if (!io.exists(path)) return []; var dd=unix.opendir(path); var res=[]; while(var n=unix.readdir(dd)) append(res,n); unix.closedir(dd); return res; } var prt = func(s,path) { var vec=files(path); var last=size(vec)-1; forindex(var i;vec) { var f=vec[i]; if (f=="." or f=="..") continue; foreach(var j;s) print("\e[34m",j,"\e[0m"); if (unix.isdir(path~"/"~f)) { println("\e[34m",i==last?" └─":" ├─","\e[0m\e[33m[",f,"]\e[36m>\e[0m"); append(s,i==last?" ":" │ "); prt(s,path~"/"~f); pop(s); } elsif (unix.isfile(path~"/"~f)) { println("\e[34m",i==last?" └─":" ├─","\e[0m\e[32m",f,"\e[0m"); } else { println("\e[34m",i==last?" └─":" ├─","\e[0m\e[91m",f,"\e[0m"); } } } # enable unicode runtime.windows.set_utf8_output(); println("\e[33m[",unix.getcwd(),"]\e[36m>\e[0m"); prt([""],".");