📝 update stl/process_bar.nas and test/md5compare.nas
This commit is contained in:
parent
ef3afa14b9
commit
c2a23ecba6
|
@ -2,9 +2,11 @@
|
|||
# ValKmjolnir 2022/6/14
|
||||
# this file is inspired by a Python lib: alive_progress
|
||||
|
||||
import("stl/log.nas");
|
||||
|
||||
var generate_bar=func(){
|
||||
var process_bar={
|
||||
bar:nil,
|
||||
spinner:nil
|
||||
};
|
||||
process_bar.bar=func(){
|
||||
var bar={
|
||||
solid_triangle_right:"▶",
|
||||
hollow_triangle_right:"▷",
|
||||
|
@ -52,15 +54,36 @@ var generate_bar=func(){
|
|||
var s="";
|
||||
for(var i=0;i<finish_length;i+=1)
|
||||
s~=front;
|
||||
for(var i=0;i<other-1;i+=1)
|
||||
for(var i=0;i<other;i+=1)
|
||||
s~=back;
|
||||
return sep[0]~s~sep[1];
|
||||
}
|
||||
};
|
||||
};
|
||||
}();
|
||||
|
||||
var generate_spinner=func(){
|
||||
process_bar.spinner=func(){
|
||||
var generate_scrolling_spinner=func(s){
|
||||
if(typeof(s)!="str")
|
||||
s="****";
|
||||
if(size(s)>16)
|
||||
s="****";
|
||||
var vec=split("",s);
|
||||
var res=[];
|
||||
var len=size(vec);
|
||||
var tmp="";
|
||||
for(var i=0;i<len;i+=1){
|
||||
tmp=pop(vec)~tmp;
|
||||
append(res,tmp);
|
||||
while(size(res[-1])!=16)
|
||||
res[-1]~=" ";
|
||||
}
|
||||
tmp=res[-1];
|
||||
while(tmp!=" "){
|
||||
tmp=" "~substr(tmp,0,15);
|
||||
append(res,tmp);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
var spinner={
|
||||
rise:["▁","▂","▃","▄","▅","▆","▇","█","█","▇","▆","▅","▄","▃","▂","▁"],
|
||||
vertical:["▏","▎","▍","▌","▋","▊","▉","▇","▇","▉","▊","▋","▌","▍","▎","▏"],
|
||||
|
@ -70,14 +93,14 @@ var generate_spinner=func(){
|
|||
classic:["/","-","\\","-"],
|
||||
balls:["●...",".●..","..●.","...●",],
|
||||
dots_wave:[
|
||||
"⠁⠂⠄⡀⢀⠠⠐⠈",
|
||||
"⠂⠄⡀⢀⠠⠐⠈⠁",
|
||||
"⠄⡀⢀⠠⠐⠈⠁⠂",
|
||||
"⡀⢀⠠⠐⠈⠁⠂⠄",
|
||||
"⢀⠠⠐⠈⠁⠂⠄⡀",
|
||||
"⠠⠐⠈⠁⠂⠄⡀⢀",
|
||||
"⠈⠁⠂⠄⡀⢀⠠⠐",
|
||||
"⠐⠈⠁⠂⠄⡀⢀⠠",
|
||||
"⠈⠁⠂⠄⡀⢀⠠⠐"
|
||||
"⠠⠐⠈⠁⠂⠄⡀⢀",
|
||||
"⢀⠠⠐⠈⠁⠂⠄⡀",
|
||||
"⡀⢀⠠⠐⠈⠁⠂⠄",
|
||||
"⠄⡀⢀⠠⠐⠈⠁⠂",
|
||||
"⠂⠄⡀⢀⠠⠐⠈⠁",
|
||||
"⠁⠂⠄⡀⢀⠠⠐⠈"
|
||||
],
|
||||
pulse:[
|
||||
"----------------",
|
||||
|
@ -130,32 +153,34 @@ var generate_spinner=func(){
|
|||
"▇▆▆▇",
|
||||
"▆▅▇█"
|
||||
],
|
||||
fish:[
|
||||
happy:[
|
||||
" ",
|
||||
"> ",
|
||||
"`> ",
|
||||
")`> ",
|
||||
"))`> ",
|
||||
")))`> ",
|
||||
"))))`> ",
|
||||
"<))))`> ",
|
||||
"><))))`> ",
|
||||
" ><))))`> ",
|
||||
" ><))))`> ",
|
||||
" ><))))`> ",
|
||||
" ><))))`> ",
|
||||
" ><))))`> ",
|
||||
" ><))))`> ",
|
||||
" ><))))`> ",
|
||||
" ><))))`>",
|
||||
" ><))))`",
|
||||
" ><))))",
|
||||
" ><)))",
|
||||
" ><))",
|
||||
" ><)",
|
||||
" ><",
|
||||
" >"
|
||||
]
|
||||
"ᕗ ",
|
||||
" ᕗ ",
|
||||
") ᕗ ",
|
||||
"ᐛ ) ᕗ ",
|
||||
" ᐛ ) ᕗ ",
|
||||
"( ᐛ ) ᕗ ",
|
||||
" ( ᐛ ) ᕗ ",
|
||||
" ᕕ ( ᐛ ) ᕗ ",
|
||||
" ᕕ ( ᐛ ) ᕗ ",
|
||||
" ᕕ ( ᐛ ) ᕗ ",
|
||||
" ᕕ ( ᐛ ) ᕗ ",
|
||||
" ᕕ ( ᐛ ) ᕗ ",
|
||||
" ᕕ ( ᐛ ) ᕗ ",
|
||||
" ᕕ ( ᐛ ) ᕗ",
|
||||
" ᕕ ( ᐛ ) ",
|
||||
" ᕕ ( ᐛ )",
|
||||
" ᕕ ( ᐛ ",
|
||||
" ᕕ ( ᐛ",
|
||||
" ᕕ ( ",
|
||||
" ᕕ (",
|
||||
" ᕕ ",
|
||||
" ᕕ",
|
||||
],
|
||||
fish:generate_scrolling_spinner("><))))`>"),
|
||||
wait:generate_scrolling_spinner("please wait"),
|
||||
stars:generate_scrolling_spinner("********")
|
||||
};
|
||||
return func(type="classic",repeat=1){
|
||||
if(typeof(type)!="str" or !contains(spinner,type))
|
||||
|
@ -179,46 +204,47 @@ var generate_spinner=func(){
|
|||
var show=func(){
|
||||
print("\ec");
|
||||
var bars={
|
||||
"classic ":generate_bar(front:"sharp",back:"point",sep:"bracket",length:40),
|
||||
"classic2 ":generate_bar(front:"equal",back:"point",sep:"bracket",length:40),
|
||||
"triangle ":generate_bar(front:"solid_triangle_right",back:"hollow_triangle_right",sep:"angle_bracket",length:40),
|
||||
"dots ":generate_bar(front:"solid_circle",back:"hollow_circle",sep:"curve",length:40),
|
||||
"ticks ":generate_bar(front:"tick",back:"space",sep:"line",length:40),
|
||||
"deep_shadow":generate_bar(front:"deep_shadow",back:"light_shadow",sep:"line",length:40),
|
||||
"block ":generate_bar(front:"block",back:"light_shadow",sep:"line",length:40)
|
||||
"classic ":process_bar.bar(front:"sharp",back:"point",sep:"bracket",length:40),
|
||||
"classic2 ":process_bar.bar(front:"equal",back:"point",sep:"bracket",length:40),
|
||||
"triangle ":process_bar.bar(front:"solid_triangle_right",back:"hollow_triangle_right",sep:"angle_bracket",length:40),
|
||||
"dots ":process_bar.bar(front:"solid_circle",back:"hollow_circle",sep:"curve",length:40),
|
||||
"ticks ":process_bar.bar(front:"tick",back:"space",sep:"line",length:40),
|
||||
"deep_shadow":process_bar.bar(front:"deep_shadow",back:"light_shadow",sep:"line",length:40),
|
||||
"block ":process_bar.bar(front:"block",back:"light_shadow",sep:"line",length:40)
|
||||
};
|
||||
var key=keys(bars);
|
||||
for(var i=0;i<40;i+=1){
|
||||
forindex(var j;key){
|
||||
var k=key[j];
|
||||
print("\e["~(j+1)~";1H["~k~"] "~bars[k].bar(i/40));
|
||||
print("\e["~(j+1)~";1H["~k~"] "~bars[k].bar((i+1)/40));
|
||||
}
|
||||
unix.sleep(1/15);
|
||||
unix.sleep(1/25);
|
||||
}
|
||||
var spinners={
|
||||
"rise ":generate_spinner(type:"rise",repeat:16),
|
||||
"vertical ":generate_spinner(type:"vertical",repeat:16),
|
||||
"dot ":generate_spinner(type:"dot",repeat:16),
|
||||
"dots ":generate_spinner(type:"dots",repeat:16),
|
||||
"arrow ":generate_spinner(type:"arrow",repeat:16),
|
||||
"classic ":generate_spinner(type:"classic",repeat:16),
|
||||
"balls ":generate_spinner(type:"balls",repeat:4),
|
||||
"dots_wave ":generate_spinner(type:"dots_wave",repeat:2),
|
||||
"pulse ":generate_spinner(type:"pulse",repeat:1),
|
||||
"wave ":generate_spinner(type:"wave",repeat:2),
|
||||
"short_wave ":generate_spinner(type:"short_wave",repeat:4),
|
||||
"fish ":generate_spinner(type:"fish",repeat:1)
|
||||
"rise ":process_bar.spinner(type:"rise",repeat:16),
|
||||
"vertical ":process_bar.spinner(type:"vertical",repeat:16),
|
||||
"dot ":process_bar.spinner(type:"dot",repeat:16),
|
||||
"dots ":process_bar.spinner(type:"dots",repeat:16),
|
||||
"arrow ":process_bar.spinner(type:"arrow",repeat:16),
|
||||
"classic ":process_bar.spinner(type:"classic",repeat:16),
|
||||
"balls ":process_bar.spinner(type:"balls",repeat:4),
|
||||
"dots_wave ":process_bar.spinner(type:"dots_wave",repeat:2),
|
||||
"pulse ":process_bar.spinner(type:"pulse",repeat:1),
|
||||
"wave ":process_bar.spinner(type:"wave",repeat:2),
|
||||
"short_wave ":process_bar.spinner(type:"short_wave",repeat:4),
|
||||
"fish ":process_bar.spinner(type:"fish",repeat:1),
|
||||
"happy ":process_bar.spinner(type:"happy",repeat:1),
|
||||
"wait ":process_bar.spinner(type:"wait",repeat:1),
|
||||
"stars ":process_bar.spinner(type:"stars",repeat:1)
|
||||
};
|
||||
var key=keys(spinners);
|
||||
for(var i=0;i<60;i+=1){
|
||||
for(var i=0;i<80;i+=1){
|
||||
forindex(var j;key){
|
||||
var k=key[j];
|
||||
var tmp=spinners[k];
|
||||
print("\e["~(j+1+size(bars))~";1H["~k~"] |"~tmp.next()~"|");
|
||||
}
|
||||
unix.sleep(1/15);
|
||||
unix.sleep(1/20);
|
||||
}
|
||||
print("\n");
|
||||
}
|
||||
|
||||
show();
|
||||
|
|
|
@ -1,19 +1,7 @@
|
|||
import("test/md5.nas");
|
||||
|
||||
import("stl/process_bar.nas");
|
||||
srand();
|
||||
|
||||
var progress_bar=func(){
|
||||
var res=[];
|
||||
setsize(res,51);
|
||||
var (tmp,sp)=(" |"," | ");
|
||||
res[0]=tmp~sp;
|
||||
for(var i=1;i<=50;i+=1){
|
||||
tmp~="#";
|
||||
res[i]=tmp~substr(sp,i,52-i);
|
||||
}
|
||||
return res;
|
||||
}();
|
||||
|
||||
var compare=func(){
|
||||
var ch=[
|
||||
"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","+",
|
||||
|
@ -21,7 +9,8 @@ var compare=func(){
|
|||
"^","&","*","(",")","-","=","\\","|","[","]","{","}","`"," ","\t","?"
|
||||
];
|
||||
return func(begin,end){
|
||||
var (total,prt_cnt,lastpercent,percent)=(end-begin,0,0,0);
|
||||
var total=end-begin;
|
||||
var bar=process_bar.bar(front:"block",back:"point",sep:"line",length:50);
|
||||
for(var i=begin;i<end;i+=1){
|
||||
var s="";
|
||||
for(var j=0;j<i;j+=1){
|
||||
|
@ -31,12 +20,7 @@ var compare=func(){
|
|||
if(cmp(res,_md5(s))){
|
||||
die("error: "~str(i));
|
||||
}
|
||||
percent=int((i-begin+1)/total*100);
|
||||
if(percent-lastpercent>=2){
|
||||
prt_cnt+=1;
|
||||
lastpercent=percent;
|
||||
}
|
||||
print(progress_bar[prt_cnt],percent,"% (",i-begin+1,"/",total,")\t",res," max byte: ",end-1," \r");
|
||||
print(" ",bar.bar((i-begin+1)/total)," (",i-begin+1,"/",total,")\t",res," max byte: ",end-1," \r");
|
||||
}
|
||||
print('\n');
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue