add recursive file searcher methods

This commit is contained in:
ValKmjolnir
2023-11-24 00:17:47 +08:00
parent 3b4afdd585
commit 2d979bebf4
4 changed files with 102 additions and 77 deletions
+48 -48
View File
@@ -1,37 +1,37 @@
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 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 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 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 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;
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 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) {
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;
flag = 1;
}
}
if (!flag) {
@@ -41,44 +41,44 @@ var blank = func(s) {
return 1;
}
var count = func(s,c) {
var cnt=0;
foreach(var i;split(c,s))
cnt+=!blank(i);
var count = func(s, c) {
var cnt = 0;
foreach(var i; split(c, s))
cnt += !blank(i);
return cnt;
}
var column = func(number) {
number=number>=1000?substr(str(number/1000),0,4)~'k':str(number);
return padding.leftpad(number,6);
number = number>=1000? substr(str(number/1000), 0, 4)~'k':str(number);
return padding.leftpad(number, 6);
}
var calc = func(codetype,files,path="") {
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;
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');
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 |');
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 |');