🚀 add new native function `char`
This commit is contained in:
parent
f9179188a5
commit
7e4faed4a6
6
lib.nas
6
lib.nas
|
@ -183,6 +183,12 @@ var chr=func(code){
|
|||
return __chr(code);
|
||||
}
|
||||
|
||||
# char will give you the real character of ascii-number
|
||||
# instead of extend-ascii when number between 128~256
|
||||
var char=func(code){
|
||||
return __char(code);
|
||||
}
|
||||
|
||||
# mut is used to change unmutable strings to mutable.
|
||||
var mut=func(str){
|
||||
return str~"";
|
||||
|
|
|
@ -534,6 +534,11 @@ var builtin_chr(var* local,gc& ngc)
|
|||
return ngc.newstr(" ");
|
||||
}
|
||||
|
||||
var builtin_char(var* local,gc& ngc)
|
||||
{
|
||||
return ngc.newstr((char)local[1].num());
|
||||
}
|
||||
|
||||
var builtin_values(var* local,gc& ngc)
|
||||
{
|
||||
var hash=local[1];
|
||||
|
@ -1262,6 +1267,7 @@ struct
|
|||
{"__right", builtin_right },
|
||||
{"__cmp", builtin_cmp },
|
||||
{"__chr", builtin_chr },
|
||||
{"__char", builtin_char },
|
||||
{"__values", builtin_values },
|
||||
{"__exists", builtin_exists },
|
||||
{"__open", builtin_open },
|
||||
|
|
|
@ -183,6 +183,12 @@ var chr=func(code){
|
|||
return __chr(code);
|
||||
}
|
||||
|
||||
# char will give you the real character of ascii-number
|
||||
# instead of extend-ascii when number between 128~256
|
||||
var char=func(code){
|
||||
return __char(code);
|
||||
}
|
||||
|
||||
# mut is used to change unmutable strings to mutable.
|
||||
var mut=func(str){
|
||||
return str~"";
|
||||
|
|
|
@ -26,7 +26,7 @@ import.module.libmat;
|
|||
func(){
|
||||
# allocate more spaces
|
||||
var t=[];
|
||||
for(var i=0;i<2048;i+=1)
|
||||
for(var i=0;i<16384;i+=1)
|
||||
append(t,[],[],[],str(i));
|
||||
t=[];
|
||||
}();
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
import.stl.process_bar;
|
||||
import.module.libkey;
|
||||
|
||||
var is_windows_platform=os.platform()=="windows";
|
||||
|
||||
var cpu_stat=func(){
|
||||
if(is_windows_platform)
|
||||
return nil;
|
||||
var cpu=split("\n",io.fin("/proc/stat"))[0];
|
||||
cpu=split(" ",cpu);
|
||||
cpu={
|
||||
|
@ -18,13 +22,23 @@ var cpu_stat=func(){
|
|||
}
|
||||
|
||||
var cpu_occupation=func(){
|
||||
var first_in=1;
|
||||
while(1){
|
||||
var cpu0=cpu_stat();
|
||||
for(var i=0;i<5;i+=1){
|
||||
if(first_in){
|
||||
unix.sleep(0.1);
|
||||
coroutine.yield(nil);
|
||||
first_in=0;
|
||||
}else{
|
||||
for(var i=0;i<10;i+=1){
|
||||
unix.sleep(0.1);
|
||||
coroutine.yield(nil);
|
||||
}
|
||||
}
|
||||
var cpu1=cpu_stat();
|
||||
if(is_windows_platform){
|
||||
coroutine.yield(0);
|
||||
continue;
|
||||
}
|
||||
var t0=cpu0.user+cpu0.nice+cpu0.system+cpu0.idle+cpu0.iowait+cpu0.irq+cpu0.softirq;
|
||||
var t1=cpu1.user+cpu1.nice+cpu1.system+cpu1.idle+cpu1.iowait+cpu1.irq+cpu1.softirq;
|
||||
var interval=cpu1.idle-cpu0.idle;
|
||||
|
@ -33,6 +47,8 @@ var cpu_occupation=func(){
|
|||
}
|
||||
|
||||
var mem_occupation=func(){
|
||||
if(is_windows_platform)
|
||||
return {MemTotal:math.inf,MemFree:math.inf};
|
||||
var meminfo=split("\n",io.fin("/proc/meminfo"));
|
||||
var mem_res={};
|
||||
forindex(var i;meminfo){
|
||||
|
@ -44,26 +60,27 @@ var mem_occupation=func(){
|
|||
}
|
||||
|
||||
func(){
|
||||
if(os.platform()=="windows"){
|
||||
println("haven't supported yet.");
|
||||
return;
|
||||
}
|
||||
var co=coroutine.create(cpu_occupation);
|
||||
var bar=process_bar.high_resolution_bar(30);
|
||||
print("\ec");
|
||||
while(1){
|
||||
var mem=mem_occupation();
|
||||
var mem_occ=(mem.MemTotal-mem.MemFree)/mem.MemTotal*100;
|
||||
if(math.isnan(mem_occ) or mem_occ<0 or mem_occ>100){
|
||||
mem_occ=0;
|
||||
}
|
||||
var cpu_occ=nil;
|
||||
while((cpu_occ=coroutine.resume(co)[0])==nil){
|
||||
var key=libkey.nonblock();
|
||||
if(key!=nil and chr(key)=="q")
|
||||
return;
|
||||
}
|
||||
println("\e[1;1H\e[1m Memory total(GB) : \e[0m\e[36m",mem.MemTotal/1024/1024,"\e[0m");
|
||||
println("\e[2;1H\e[1m Memory free(GB) : \e[0m\e[36m",mem.MemFree/1024/1024,"\e[0m");
|
||||
println("\e[3;1H\e[1m Memory occupation(%): \e[0m",mem_occ>60?"\e[91m":"\e[32m",bar.bar(mem_occ/100)~" ",mem_occ,"\e[0m ");
|
||||
println("\e[4;1H\e[1m CPU occupation(%) : \e[0m",cpu_occ>90?"\e[91m":"\e[32m",bar.bar(cpu_occ/100)~" ",cpu_occ,"\e[0m ");
|
||||
println("\e[5;1H Press 'q' to quit.");
|
||||
println("\e[1;1H\e[1m Operating system : \e[0m",is_windows_platform?"\e[31m":"\e[36m",os.platform(),"\e[0m");
|
||||
println("\e[2;1H\e[1m Current time : \e[0m\e[36m",os.time(),"\e[0m");
|
||||
println("\e[3;1H\e[1m Memory total(GB) : \e[0m\e[36m",mem.MemTotal/1024/1024,"\e[0m");
|
||||
println("\e[4;1H\e[1m Memory free(GB) : \e[0m\e[36m",mem.MemFree/1024/1024,"\e[0m");
|
||||
println("\e[5;1H\e[1m Memory occupation(%): \e[0m",mem_occ>60?"\e[91m":"\e[32m",bar.bar(mem_occ/100)~" ",mem_occ,"\e[0m ");
|
||||
println("\e[6;1H\e[1m CPU occupation(%) : \e[0m",cpu_occ>90?"\e[91m":"\e[32m",bar.bar(cpu_occ/100)~" ",cpu_occ,"\e[0m ");
|
||||
println("\e[7;1H Press 'q' to quit.");
|
||||
}
|
||||
}();
|
|
@ -8,6 +8,7 @@ var unicode测试=func(){
|
|||
foreach(var 内容;测试成功)
|
||||
输出(内容~"\n");
|
||||
}
|
||||
|
||||
var emoji测试=func(){
|
||||
var 💻=print;
|
||||
var 🎤="\n";
|
||||
|
@ -45,5 +46,27 @@ var emoji测试=func(){
|
|||
foreach(var 📄;keys(🗄️))
|
||||
💻(📄,🗄️[📄],🎤);
|
||||
}
|
||||
|
||||
var dotsgen=func(){
|
||||
var dots=[];
|
||||
var s="⠀";
|
||||
for(var i=0;i<256;i+=1){
|
||||
var v0=s[0];
|
||||
var v1=s[1]+int(i/64);
|
||||
var v2=s[2]+i;
|
||||
if(v2>191){
|
||||
v2-=int(i/64)*64;
|
||||
}
|
||||
var tmp=char(v0)~char(v1)~char(v2);
|
||||
append(dots,tmp);
|
||||
}
|
||||
|
||||
forindex(var i;dots){
|
||||
print(dots[i],(i+1-int((i+1)/32)*32==0)?"\n":"");
|
||||
}
|
||||
return dots;
|
||||
};
|
||||
|
||||
unicode测试();
|
||||
emoji测试();
|
||||
emoji测试();
|
||||
dotsgen();
|
Loading…
Reference in New Issue