mirror of
https://github.com/ValKmjolnir/Nasal-Interpreter.git
synced 2026-07-21 10:28:50 +08:00
🚀 optimize stl/stack.nas, test/calc.nas & io.fin now returns empty string when cannot open file
This commit is contained in:
+2
-5
@@ -91,15 +91,12 @@ nas_ref builtin_fin(nas_ref* local,nasal_gc& gc)
|
||||
nas_ref val=local[1];
|
||||
if(val.type!=vm_str)
|
||||
return nas_err("io.fin","\"filename\" must be string");
|
||||
std::ifstream fin(val.str());
|
||||
if(!fin.fail())
|
||||
{
|
||||
std::ifstream fin(val.str(),std::ios::binary);
|
||||
std::stringstream rd;
|
||||
if(!fin.fail())
|
||||
rd<<fin.rdbuf();
|
||||
return gc.newstr(rd.str());
|
||||
}
|
||||
return nas_err("io.fin","cannot open <"+val.str()+">");
|
||||
}
|
||||
nas_ref builtin_fout(nas_ref* local,nasal_gc& gc)
|
||||
{
|
||||
nas_ref val=local[1];
|
||||
|
||||
+7
-8
@@ -1,24 +1,23 @@
|
||||
# stack.nas
|
||||
# valkmjolnir 2021/3/31
|
||||
var stack=func(){
|
||||
var next=nil;
|
||||
var vec=[];
|
||||
return{
|
||||
push:func(elem){
|
||||
next={elem:elem,next:next};
|
||||
append(vec,elem);
|
||||
},
|
||||
pop:func(){
|
||||
if(next!=nil)
|
||||
next=next.next;
|
||||
return pop(vec);
|
||||
},
|
||||
top:func(){
|
||||
if(next!=nil)
|
||||
return next.elem;
|
||||
if(size(vec)!=0)
|
||||
return vec[-1];
|
||||
},
|
||||
clear:func(){
|
||||
next=nil;
|
||||
vec=[];
|
||||
},
|
||||
empty:func(){
|
||||
return next==nil;
|
||||
return size(vec)==0;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
+3
-3
@@ -89,9 +89,9 @@ var getname=func(s){
|
||||
}
|
||||
|
||||
var count=func(s,c){
|
||||
var (cnt,len,ch)=(0,size(s),c[0]);
|
||||
for(var i=0;i<len;i+=1)
|
||||
cnt+=(s[i]==ch);
|
||||
var cnt=0;
|
||||
foreach(var i;split(c,s))
|
||||
cnt+=(size(i)!=0 and i!="\r")
|
||||
return cnt;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user