2023-11-01 00:37:02 +08:00
|
|
|
use std.padding;
|
|
|
|
use std.file;
|
2023-07-20 00:54:57 +08:00
|
|
|
|
|
|
|
var source=file.find_all_files_with_extension("./src","cpp","h");
|
2023-11-16 23:19:03 +08:00
|
|
|
sort(source,func(a,b) {return cmp(a,b)<0});
|
2022-02-11 17:04:27 +08:00
|
|
|
|
2023-07-20 00:54:57 +08:00
|
|
|
var lib=file.find_all_files_with_extension("./std","nas");
|
2023-11-16 23:19:03 +08:00
|
|
|
sort(lib,func(a,b) {return cmp(a,b)<0});
|
2022-02-11 17:04:27 +08:00
|
|
|
|
2023-07-20 00:54:57 +08:00
|
|
|
var testfile=file.find_all_files_with_extension("./test","nas");
|
2023-11-16 23:19:03 +08:00
|
|
|
sort(testfile,func(a,b) {return cmp(a,b)<0});
|
2022-02-11 17:04:27 +08:00
|
|
|
|
2023-07-20 00:54:57 +08:00
|
|
|
var module=file.find_all_files_with_extension("./module","cpp","nas");
|
2023-11-16 23:19:03 +08:00
|
|
|
sort(module,func(a,b) {return cmp(a,b)<0});
|
2022-02-11 17:04:27 +08:00
|
|
|
|
2023-11-16 23:19:03 +08:00
|
|
|
var longest = func(vec...) {
|
2022-09-04 17:53:00 +08:00
|
|
|
var len=0;
|
|
|
|
foreach(var v;vec)
|
|
|
|
foreach(var f;v)
|
|
|
|
len=size(f)>len?size(f):len;
|
|
|
|
return len;
|
|
|
|
}
|
2022-09-09 01:00:09 +08:00
|
|
|
var padding_length=longest(source,lib,testfile,module);
|
2022-09-04 17:53:00 +08:00
|
|
|
|
2023-11-16 23:19:03 +08:00
|
|
|
var blank = func(s) {
|
|
|
|
if (!size(s)) {
|
2023-02-02 21:24:21 +08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
var space=[" "[0],"\n"[0],"\t"[0],"\r"[0]];
|
2023-11-16 23:19:03 +08:00
|
|
|
for(var i=0;i<size(s);i+=1) {
|
2023-02-02 21:24:21 +08:00
|
|
|
var flag=0;
|
2023-11-16 23:19:03 +08:00
|
|
|
foreach(var j;space) {
|
|
|
|
if (s[i]==j) {
|
2023-02-02 21:24:21 +08:00
|
|
|
flag=1;
|
|
|
|
}
|
|
|
|
}
|
2023-11-16 23:19:03 +08:00
|
|
|
if (!flag) {
|
2023-02-02 21:24:21 +08:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2023-11-16 23:19:03 +08:00
|
|
|
var count = func(s,c) {
|
2022-08-07 00:35:55 +08:00
|
|
|
var cnt=0;
|
|
|
|
foreach(var i;split(c,s))
|
2023-02-02 21:24:21 +08:00
|
|
|
cnt+=!blank(i);
|
2021-06-24 22:10:08 +08:00
|
|
|
return cnt;
|
|
|
|
}
|
2022-02-11 17:04:27 +08:00
|
|
|
|
2023-11-16 23:19:03 +08:00
|
|
|
var column = func(number) {
|
2023-08-31 00:32:01 +08:00
|
|
|
number=number>=1000?substr(str(number/1000),0,4)~'k':str(number);
|
2023-07-23 00:30:14 +08:00
|
|
|
return padding.leftpad(number,6);
|
2022-09-09 01:00:09 +08:00
|
|
|
}
|
|
|
|
|
2023-11-16 23:19:03 +08:00
|
|
|
var calc = func(codetype,files,path="") {
|
2022-02-11 17:04:27 +08:00
|
|
|
println(codetype);
|
2022-09-10 15:45:25 +08:00
|
|
|
var (bytes,ctx,line,semi,line_cnt,semi_cnt)=(0,"",0,0,0,0);
|
2023-11-16 23:19:03 +08:00
|
|
|
forindex(var i;files) {
|
2023-04-28 23:11:17 +08:00
|
|
|
var s=io.exists(path~files[i])?io.readfile(path~files[i]):"";
|
2022-02-11 17:04:27 +08:00
|
|
|
(line_cnt,semi_cnt)=(count(s,'\n'),count(s,';'));
|
2023-07-23 00:30:14 +08:00
|
|
|
println(padding.rightpad(files[i],padding_length),'|',
|
2023-02-02 21:24:21 +08:00
|
|
|
column(line_cnt),' line |',
|
|
|
|
column(semi_cnt),' semi |',
|
2023-07-23 00:30:14 +08:00
|
|
|
padding.leftpad(str(int(size(s)/1024)),4),' kb | ',
|
2022-09-10 15:45:25 +08:00
|
|
|
md5(s),' |');
|
2022-01-16 22:48:00 +08:00
|
|
|
bytes+=size(s);
|
2022-09-10 15:45:25 +08:00
|
|
|
ctx~=s;
|
2021-06-24 22:10:08 +08:00
|
|
|
line+=line_cnt;
|
2021-03-07 16:33:43 +08:00
|
|
|
semi+=semi_cnt;
|
|
|
|
}
|
2023-07-23 00:30:14 +08:00
|
|
|
println(padding.rightpad("total:",padding_length),'|',
|
2023-02-02 21:24:21 +08:00
|
|
|
column(line),' line |',
|
|
|
|
column(semi),' semi |',
|
2023-07-23 00:30:14 +08:00
|
|
|
padding.leftpad(str(int(bytes/1024)),4),' kb | ',
|
2022-09-10 15:45:25 +08:00
|
|
|
md5(ctx),' |\n');
|
2022-07-31 19:26:13 +08:00
|
|
|
return int(bytes/1024);
|
2022-02-11 17:04:27 +08:00
|
|
|
}
|
|
|
|
|
2023-07-02 19:48:36 +08:00
|
|
|
var all=calc("source code:",source,"src/")
|
2023-07-02 16:17:56 +08:00
|
|
|
+calc("lib:",lib,"std/")
|
2022-09-04 17:53:00 +08:00
|
|
|
+calc("test file:",testfile,"test/")
|
|
|
|
+calc("module:",module,"module/");
|
2023-07-23 00:30:14 +08:00
|
|
|
println(padding.rightpad("total:",padding_length),'|',padding.leftpad(str(all),6),' kb |');
|