mirror of
https://github.com/ValKmjolnir/Nasal-Interpreter.git
synced 2026-05-02 19:00:47 +08:00
⚡ avoid repeatedly importing the same modules
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
use std.file;
|
||||
use std.padding;
|
||||
use std.process_bar;
|
||||
|
||||
var tips = func() {
|
||||
println("usage:");
|
||||
@@ -20,7 +22,7 @@ var needle = arg[0];
|
||||
var do_flat = func(vec) {
|
||||
var flat = [];
|
||||
var bfs = [vec];
|
||||
while(size(bfs)) {
|
||||
while(size(bfs)!=0) {
|
||||
var d = pop(bfs);
|
||||
foreach(var f; d.files) {
|
||||
if (ishash(f)) {
|
||||
@@ -30,21 +32,21 @@ var do_flat = func(vec) {
|
||||
append(flat, d.dir~"/"~f);
|
||||
}
|
||||
}
|
||||
sort(flat, func(a, b){return cmp(a, b)<0});
|
||||
sort(flat, func(a, b) {return cmp(a, b)<0});
|
||||
return flat;
|
||||
}
|
||||
|
||||
var count = 0;
|
||||
foreach(var f; do_flat(file.recursive_find_files("."))) {
|
||||
var result = [];
|
||||
var all_files = file.recursive_find_files(".");
|
||||
foreach(var f; do_flat(all_files)) {
|
||||
var pos = find(needle, f);
|
||||
if (pos == -1) {
|
||||
continue;
|
||||
}
|
||||
count += 1;
|
||||
var begin = substr(f, 0, pos);
|
||||
var end = pos+size(needle)>=size(f)? "":substr(f, pos+size(needle), size(f));
|
||||
var file_size = fstat(f).st_size;
|
||||
var unit = "b";
|
||||
var unit = " b";
|
||||
if (file_size>1024) {
|
||||
file_size/=1024;
|
||||
unit = "kb";
|
||||
@@ -58,7 +60,20 @@ foreach(var f; do_flat(file.recursive_find_files("."))) {
|
||||
unit = "gb";
|
||||
}
|
||||
file_size = int(file_size);
|
||||
println(begin, "\e[95;1m", needle, "\e[0m", end, " | ", file_size, " ", unit);
|
||||
append(result, {
|
||||
info: begin~"\e[95;1m"~needle~"\e[0m"~end,
|
||||
size: file_size,
|
||||
unit: unit
|
||||
});
|
||||
}
|
||||
|
||||
println("\n", count, " result(s).");
|
||||
var max_len = 0;
|
||||
foreach(var elem; result) {
|
||||
var temp = size(str(elem.size)~" "~elem.unit);
|
||||
max_len = math.max(max_len, temp);
|
||||
}
|
||||
foreach(var elem; result) {
|
||||
var temp = padding.leftpad(str(elem.size)~" "~elem.unit, max_len);
|
||||
println(temp, " | ", elem.info);
|
||||
}
|
||||
println("\n", size(result), " result(s).");
|
||||
Reference in New Issue
Block a user