| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.lang.functional.scan"]){ |
| dojo._hasResource["dojox.lang.functional.scan"]=true; |
| dojo.provide("dojox.lang.functional.scan"); |
| dojo.require("dojox.lang.functional.lambda"); |
| (function(){ |
| var d=dojo,df=dojox.lang.functional,_1={}; |
| d.mixin(df,{scanl:function(a,f,z,o){ |
| if(typeof a=="string"){ |
| a=a.split(""); |
| } |
| o=o||d.global; |
| f=df.lambda(f); |
| var t,n,i; |
| if(d.isArray(a)){ |
| t=new Array((n=a.length)+1); |
| t[0]=z; |
| for(i=0;i<n;z=f.call(o,z,a[i],i,a),t[++i]=z){ |
| } |
| }else{ |
| if(typeof a.hasNext=="function"&&typeof a.next=="function"){ |
| t=[z]; |
| for(i=0;a.hasNext();t.push(z=f.call(o,z,a.next(),i++,a))){ |
| } |
| }else{ |
| t=[z]; |
| for(i in a){ |
| if(!(i in _1)){ |
| t.push(z=f.call(o,z,a[i],i,a)); |
| } |
| } |
| } |
| } |
| return t; |
| },scanl1:function(a,f,o){ |
| if(typeof a=="string"){ |
| a=a.split(""); |
| } |
| o=o||d.global; |
| f=df.lambda(f); |
| var t,n,z,_2=true; |
| if(d.isArray(a)){ |
| t=new Array(n=a.length); |
| t[0]=z=a[0]; |
| for(var i=1;i<n;t[i]=z=f.call(o,z,a[i],i,a),++i){ |
| } |
| }else{ |
| if(typeof a.hasNext=="function"&&typeof a.next=="function"){ |
| if(a.hasNext()){ |
| t=[z=a.next()]; |
| for(var i=1;a.hasNext();t.push(z=f.call(o,z,a.next(),i++,a))){ |
| } |
| } |
| }else{ |
| for(var i in a){ |
| if(!(i in _1)){ |
| if(_2){ |
| t=[z=a[i]]; |
| _2=false; |
| }else{ |
| t.push(z=f.call(o,z,a[i],i,a)); |
| } |
| } |
| } |
| } |
| } |
| return t; |
| },scanr:function(a,f,z,o){ |
| if(typeof a=="string"){ |
| a=a.split(""); |
| } |
| o=o||d.global; |
| f=df.lambda(f); |
| var n=a.length,t=new Array(n+1),i=n; |
| t[n]=z; |
| for(;i>0;--i,z=f.call(o,z,a[i],i,a),t[i]=z){ |
| } |
| return t; |
| },scanr1:function(a,f,o){ |
| if(typeof a=="string"){ |
| a=a.split(""); |
| } |
| o=o||d.global; |
| f=df.lambda(f); |
| var n=a.length,t=new Array(n),z=a[n-1],i=n-1; |
| t[i]=z; |
| for(;i>0;--i,z=f.call(o,z,a[i],i,a),t[i]=z){ |
| } |
| return t; |
| }}); |
| })(); |
| } |