| /* |
| 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.listcomp"]){ |
| dojo._hasResource["dojox.lang.functional.listcomp"]=true; |
| dojo.provide("dojox.lang.functional.listcomp"); |
| (function(){ |
| var _1=/\bfor\b|\bif\b/gm; |
| var _2=function(s){ |
| var _3=s.split(_1),_4=s.match(_1),_5=["var r = [];"],_6=[],i=0,l=_4.length; |
| while(i<l){ |
| var a=_4[i],f=_3[++i]; |
| if(a=="for"&&!/^\s*\(\s*(;|var)/.test(f)){ |
| f=f.replace(/^\s*\(/,"(var "); |
| } |
| _5.push(a,f,"{"); |
| _6.push("}"); |
| } |
| return _5.join("")+"r.push("+_3[0]+");"+_6.join("")+"return r;"; |
| }; |
| dojo.mixin(dojox.lang.functional,{buildListcomp:function(s){ |
| return "function(){"+_2(s)+"}"; |
| },compileListcomp:function(s){ |
| return new Function([],_2(s)); |
| },listcomp:function(s){ |
| return (new Function([],_2(s)))(); |
| }}); |
| })(); |
| } |