🚀 add file::find_all_files_with_extension

This commit is contained in:
ValKmjolnir
2023-02-02 21:24:21 +08:00
parent 72551de9e9
commit 196c1933d1
4 changed files with 113 additions and 108 deletions
+39 -101
View File
@@ -1,99 +1,18 @@
import.stl.padding;
import.stl.file;
import.stl.sort;
var source=[
"main.cpp",
"nasal_ast.h",
"nasal_builtin.h",
"nasal_codegen.h",
"nasal_dbg.h",
"nasal_err.h",
"nasal_gc.h",
"nasal_import.h",
"nasal_lexer.h",
"nasal_opt.h",
"nasal_parse.h",
"nasal_vm.h",
"nasal.h"
];
var source=find_all_files_with_extension(".","cpp","h");
sort(source,func(a,b){return cmp(a,b)<0});
var lib=[
"fg_env.nas",
"file.nas",
"json.nas",
"lib.nas",
"list.nas",
"log.nas",
"module.nas",
"padding.nas",
"process_bar.nas",
"queue.nas",
"result.nas",
"sort.nas",
"stack.nas",
"string.nas"
];
var lib=find_all_files_with_extension("./stl","nas");
sort(lib,func(a,b){return cmp(a,b)<0});
var testfile=[
"ascii-art.nas",
"auto_crash.nas",
"bf.nas",
"bfconvertor.nas",
"bfs.nas",
"bigloop.nas",
"bp.nas",
"calc.nas",
"choice.nas",
"class.nas",
"console3D.nas",
"coroutine.nas",
"datalog.nas",
"diff.nas",
"donuts.nas",
"exception.nas",
"fib.nas",
"filesystem.nas",
"hexdump.nas",
"httptest.nas",
"json.nas",
"leetcode1319.nas",
"lexer.nas",
"life.nas",
"loop.nas",
"mandel.nas",
"mandelbrot.nas",
"mcpu.nas",
"md5.nas",
"md5compare.nas",
"module_test.nas",
"nasal_test.nas",
"occupation.nas",
"pi.nas",
"ppmgen.nas",
"prime.nas",
"qrcode.nas",
"quick_sort.nas",
"scalar.nas",
"snake.nas",
"tetris.nas",
"trait.nas",
"turingmachine.nas",
"utf8chk.nas",
"watchdog.nas",
"wavecollapse.nas",
"word_collector.nas",
"ycombinator.nas"
];
var testfile=find_all_files_with_extension("./test","nas");
sort(testfile,func(a,b){return cmp(a,b)<0});
var module=[
"fib.cpp",
"keyboard.cpp",
"matrix.cpp",
"nasocket.cpp",
"libfib.nas",
"libkey.nas",
"libmat.nas",
"libsock.nas"
];
var module=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;
@@ -104,16 +23,35 @@ var longest=func(vec...){
}
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<size(s);i+=1){
var flag=0;
foreach(var j;space){
if(s[i]==j){
flag=1;
}
}
if(flag){
return 0;
}
}
return 1;
}
var count=func(s,c){
var cnt=0;
foreach(var i;split(c,s))
cnt+=(size(i)!=0 and i!="\r")
cnt+=!blank(i);
return cnt;
}
var column=func(number){
number=number>=1000?substr(str(number/1000),0,3)~'k':str(number);
return rightpad(number,6);
return leftpad(number,6);
}
var calc=func(codetype,files,path=""){
@@ -122,20 +60,20 @@ var calc=func(codetype,files,path=""){
forindex(var i;files){
var s=io.exists(path~files[i])?io.fin(path~files[i]):"";
(line_cnt,semi_cnt)=(count(s,'\n'),count(s,';'));
println(rightpad(files[i],padding_length),'| ',
column(line_cnt),'line | ',
column(semi_cnt),'semi | ',
rightpad(str(int(size(s)/1024)),6),'kb | ',
println(rightpad(files[i],padding_length),'|',
column(line_cnt),' line |',
column(semi_cnt),' semi |',
leftpad(str(int(size(s)/1024)),3),' kb | ',
md5(s),' |');
bytes+=size(s);
ctx~=s;
line+=line_cnt;
semi+=semi_cnt;
}
println(rightpad("total:",padding_length),'| ',
column(line),'line | ',
column(semi),'semi | ',
rightpad(str(int(bytes/1024)),6),'kb | ',
println(rightpad("total:",padding_length),'|',
column(line),' line |',
column(semi),' semi |',
leftpad(str(int(bytes/1024)),3),' kb | ',
md5(ctx),' |\n');
return int(bytes/1024);
}