🚀 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];
|
nas_ref val=local[1];
|
||||||
if(val.type!=vm_str)
|
if(val.type!=vm_str)
|
||||||
return nas_err("io.fin","\"filename\" must be string");
|
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())
|
if(!fin.fail())
|
||||||
{
|
|
||||||
std::stringstream rd;
|
|
||||||
rd<<fin.rdbuf();
|
rd<<fin.rdbuf();
|
||||||
return gc.newstr(rd.str());
|
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 builtin_fout(nas_ref* local,nasal_gc& gc)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,24 +1,23 @@
|
||||||
# stack.nas
|
# stack.nas
|
||||||
# valkmjolnir 2021/3/31
|
# valkmjolnir 2021/3/31
|
||||||
var stack=func(){
|
var stack=func(){
|
||||||
var next=nil;
|
var vec=[];
|
||||||
return{
|
return{
|
||||||
push:func(elem){
|
push:func(elem){
|
||||||
next={elem:elem,next:next};
|
append(vec,elem);
|
||||||
},
|
},
|
||||||
pop:func(){
|
pop:func(){
|
||||||
if(next!=nil)
|
return pop(vec);
|
||||||
next=next.next;
|
|
||||||
},
|
},
|
||||||
top:func(){
|
top:func(){
|
||||||
if(next!=nil)
|
if(size(vec)!=0)
|
||||||
return next.elem;
|
return vec[-1];
|
||||||
},
|
},
|
||||||
clear:func(){
|
clear:func(){
|
||||||
next=nil;
|
vec=[];
|
||||||
},
|
},
|
||||||
empty:func(){
|
empty:func(){
|
||||||
return next==nil;
|
return size(vec)==0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,9 +89,9 @@ var getname=func(s){
|
||||||
}
|
}
|
||||||
|
|
||||||
var count=func(s,c){
|
var count=func(s,c){
|
||||||
var (cnt,len,ch)=(0,size(s),c[0]);
|
var cnt=0;
|
||||||
for(var i=0;i<len;i+=1)
|
foreach(var i;split(c,s))
|
||||||
cnt+=(s[i]==ch);
|
cnt+=(size(i)!=0 and i!="\r")
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue