use std.padding; use std.file; var source=file.find_all_files_with_extension("./src","cpp","h"); sort(source,func(a,b) {return cmp(a,b)<0}); var lib=file.find_all_files_with_extension("./std","nas"); sort(lib,func(a,b) {return cmp(a,b)<0}); var testfile=file.find_all_files_with_extension("./test","nas"); sort(testfile,func(a,b) {return cmp(a,b)<0}); var module=file.find_all_files_with_extension("./module","cpp","nas"); sort(module,func(a,b) {return cmp(a,b)<0}); var longest = func(vec...) { var len=0; foreach(var v;vec) foreach(var f;v) len=size(f)>len?size(f):len; return len; } var padding_length=longest(source,lib,testfile,module); var blank = func(s) { if (!size(s)) { return 1; } var space=[" "[0],"\n"[0],"\t"[0],"\r"[0]]; for(var i=0;i=1000?substr(str(number/1000),0,4)~'k':str(number); return padding.leftpad(number,6); } var calc = func(codetype,files,path="") { println(codetype); var (bytes,ctx,line,semi,line_cnt,semi_cnt)=(0,"",0,0,0,0); forindex(var i;files) { var s=io.exists(path~files[i])?io.readfile(path~files[i]):""; (line_cnt,semi_cnt)=(count(s,'\n'),count(s,';')); println(padding.rightpad(files[i],padding_length),'|', column(line_cnt),' line |', column(semi_cnt),' semi |', padding.leftpad(str(int(size(s)/1024)),4),' kb | ', md5(s),' |'); bytes+=size(s); ctx~=s; line+=line_cnt; semi+=semi_cnt; } println(padding.rightpad("total:",padding_length),'|', column(line),' line |', column(semi),' semi |', padding.leftpad(str(int(bytes/1024)),4),' kb | ', md5(ctx),' |\n'); return int(bytes/1024); } var all=calc("source code:",source,"src/") +calc("lib:",lib,"std/") +calc("test file:",testfile,"test/") +calc("module:",module,"module/"); println(padding.rightpad("total:",padding_length),'|',padding.leftpad(str(all),6),' kb |');