🚀 optimize stl/stack.nas, test/calc.nas & io.fin now returns empty string when cannot open file
This commit is contained in:
parent
2937c10c77
commit
7ddb8593ad
|
@ -91,14 +91,11 @@ 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());
|
||||
std::ifstream fin(val.str(),std::ios::binary);
|
||||
std::stringstream rd;
|
||||
if(!fin.fail())
|
||||
{
|
||||
std::stringstream rd;
|
||||
rd<<fin.rdbuf();
|
||||
return gc.newstr(rd.str());
|
||||
}
|
||||
return nas_err("io.fin","cannot open <"+val.str()+">");
|
||||
return gc.newstr(rd.str());
|
||||
}
|
||||
nas_ref builtin_fout(nas_ref* local,nasal_gc& gc)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue