🚀 add high resolution progress bar

This commit is contained in:
ValKmjolnir 2022-09-28 23:45:15 +08:00
parent 6ef22d3228
commit 946aa020a5
9 changed files with 57 additions and 20 deletions

View File

@ -91,11 +91,7 @@ If you think `-O3` isn't that safe and stable, you could choose:
![usage](./doc/gif/help.gif)
If your system is `Windows` and you want to output unicode,please use this command before running nasal:
> chcp 65001
or you could write this in nasal code:
If your system is `Windows` and you want to output unicode, you could write this in nasal code:
```javascript
if(os.platform()=="windows")

View File

@ -80,11 +80,7 @@ __注意__: 如果你想直接下载发行版提供的zip/tar.gz压缩包来构
![usage](../doc/gif/help.gif)
如果你的操作系统是 `Windows` 且想输出unicode请保证控制台代码页支持utf-8使用下面这个命令启用代码页:
> chcp 65001
或者直接在nasal代码里写这个来开启:
如果你是 `Windows` 用户且想正常输出unicode在nasal代码里写这个来开启unicode代码页:
```javascript
if(os.platform()=="windows")

View File

@ -276,8 +276,7 @@ std::ostream& operator<<(std::ostream& out,nas_vec& vec)
return out;
}
vec.printed=true;
usize iter=0;
usize size=vec.elems.size();
usize iter=0,size=vec.elems.size();
out<<'[';
for(auto& i:vec.elems)
out<<i<<",]"[(++iter)==size];
@ -331,8 +330,7 @@ std::ostream& operator<<(std::ostream& out,nas_hash& hash)
return out;
}
hash.printed=true;
usize iter=0;
usize size=hash.elems.size();
usize iter=0,size=hash.elems.size();
out<<'{';
for(auto& i:hash.elems)
out<<i.first<<':'<<i.second<<",}"[(++iter)==size];

View File

@ -4,8 +4,10 @@
var process_bar={
bar:nil,
high_resolution_bar:nil,
spinner:nil
};
process_bar.bar=func(){
var bar={
solid_triangle_right:"▶",
@ -62,6 +64,45 @@ process_bar.bar=func(){
};
};
}();
# return a high resolution progress bar
# example:
# var bar=process_bar.high_resolution_bar(40);
# for(var i=0;i<=1;i+=0.001){
# print(bar.bar(i,40),'\r');
# unix.sleep(0.001);
# }
# println();
process_bar.high_resolution_bar=func(){
var block=["▏","▎","▍","▌","▋","▊","▉","█"];
return func(length){
return {
bar: func(number){
if(number>1)
number=1;
if(number<0)
number=0;
var block_len=number*length;
var complete_block=int(block_len);
var decimal=block_len-complete_block;
var progress=complete_block+(decimal!=0);
var s="|";
for(var i=0;i<complete_block;i+=1){
s~="█";
}
if(decimal!=0){
s~=block[int(decimal*10)/10*size(block)];
}
for(var i=0;i<length-progress;i+=1){
s~=" ";
}
s~="|";
return s;
}
};
};
}();
process_bar.spinner=func(){
var generate_scrolling_spinner=func(s){
if(typeof(s)!="str")

View File

@ -106,7 +106,7 @@ var count=func(s,c){
}
var column=func(number){
number=number>=1000?int(number/1000)~'k':str(number);
number=number>=1000?substr(str(number/1000),0,3)~'k':str(number);
return rightpad(number,6);
}

View File

@ -44,8 +44,10 @@ var total=1000; # ms
var co=coroutine.create(productor);
var tm=maketimestamp();
if(os.platform()=="windows")
system("chcp 65001");
var counter=0;
var bar=process_bar.bar("block","point","line",40);
var bar=process_bar.high_resolution_bar(40);
var consumer=func(){
counter+=1;
for(var i=0;i<5;i+=1)

View File

@ -13,7 +13,7 @@ var compare=func(){
var total=end-begin;
var timestamp=maketimestamp();
timestamp.stamp();
var bar=process_bar.bar(front:os.platform()=="windows"?"sharp":"block",back:"point",sep:"line",length:50);
var bar=process_bar.high_resolution_bar(50);
for(var i=begin;i<end;i+=1){
var s="";
for(var j=0;j<i;j+=1){
@ -76,7 +76,7 @@ var filechecksum=func(){
var total=size(files);
var timestamp=maketimestamp();
timestamp.stamp();
var bar=process_bar.bar(front:os.platform()=="windows"?"sharp":"block",back:"point",sep:"line",length:50);
var bar=process_bar.high_resolution_bar(50);
forindex(var i;files){
var f=io.fin(files[i]);
var res=md5(f);
@ -94,5 +94,7 @@ var randomchecksum=func(){
compare(i,i+512);
}
if(os.platform()=="windows")
system("chcp 65001");
filechecksum();
randomchecksum();

View File

@ -47,7 +47,7 @@ func(){
var mem_occ=(mem.MemTotal-mem.MemFree)/mem.MemTotal*100;
var cpu_occ=cpu_occupation();
var key=libkey.nonblock();
var bar=process_bar.bar("block","point","line",25);
var bar=process_bar.high_resolution_bar(25);
if(key!=nil and chr(key)=="q")
break;
println("\e[1;1H\e[1m Memory total(GB) : \e[0m\e[36m",mem.MemTotal/1024/1024,"\e[0m");

View File

@ -15,7 +15,9 @@ var ppm=func(filename,width,height,RGB){
var width=1280;
var height=720;
var bar=process_bar.bar(front:os.platform()=="windows"?"sharp":"block",back:"point",sep:"line",length:50);
var bar=(os.platform()=="windows")?
process_bar.bar(front:"sharp",back:"point",sep:"line",length:50):
process_bar.high_resolution_bar(50);
var f=func(i,j){
var (yMin,yMax,xMin,xMax)=(-1.35,1.35,-3.3,1.5);
var (yDel,xDel)=(yMax-yMin,xMax-xMin);