Changeset 1391

Show
Ignore:
Timestamp:
06/24/08 05:41:41 (4 months ago)
Author:
cederberg@gmail.com
Message:

Changed MochiKit.Base.serializeJSON string handling to follow the JSON specification more closely (#313).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • mochikit/trunk/MochiKit/Base.js

    r1390 r1391  
    836836        } else if (o === null) { 
    837837            return "null"; 
    838         } 
    839         var m = MochiKit.Base; 
    840         var reprString = m.reprString; 
    841         if (objtype == "string") { 
    842             return reprString(o); 
     838        } else if (objtype == "string") { 
     839            var res = ""; 
     840            for (var i = 0; i < o.length; i++) { 
     841                var c = o.charAt(i); 
     842                if (c == '\"') { 
     843                    res += '\\"'; 
     844                } else if (c == '\\') { 
     845                    res += '\\\\'; 
     846                } else if (c == '\b') { 
     847                    res += '\\b'; 
     848                } else if (c == '\f') { 
     849                    res += '\\f'; 
     850                } else if (c == '\n') { 
     851                    res += '\\n'; 
     852                } else if (c == '\r') { 
     853                    res += '\\r'; 
     854                } else if (c == '\t') { 
     855                    res += '\\t'; 
     856                } else if (o.charCodeAt(i) <= 0x1F) { 
     857                    var hex = o.charCodeAt(i).toString(16); 
     858                    if (hex.length < 2) { 
     859                        hex = '0' + hex; 
     860                    } 
     861                    res += '\\u00' + hex.toUpperCase(); 
     862                } else { 
     863                    res += c; 
     864                } 
     865            } 
     866            return '"' + res + '"'; 
    843867        } 
    844868        // recurse 
     
    865889                var val = me(o[i]); 
    866890                if (typeof(val) != "string") { 
    867                     val = "undefined"; 
     891                    // skip non-serializable values 
     892                    continue; 
    868893                } 
    869894                res.push(val); 
     
    872897        } 
    873898        // look in the registry 
     899        var m = MochiKit.Base; 
    874900        try { 
    875901            newObj = m.jsonRegistry.match(o); 
     
    898924                useKey = '"' + k + '"'; 
    899925            } else if (typeof(k) == "string") { 
    900                 useKey = reprString(k); 
     926                useKey = me(k); 
    901927            } else { 
    902928                // skip non-string or number keys 
  • mochikit/trunk/packed/MochiKit/MochiKit.js

    r1390 r1391  
    650650if(o===null){ 
    651651return "null"; 
    652 
    653 
    654 var m=MochiKit.Base; 
    655 var _ea=m.reprString; 
     652}else{ 
    656653if(_e8=="string"){ 
    657 return _ea(o); 
     654var res=""; 
     655for(var i=0;i<o.length;i++){ 
     656var c=o.charAt(i); 
     657if(c=="\""){ 
     658res+="\\\""; 
     659}else{ 
     660if(c=="\\"){ 
     661res+="\\\\"; 
     662}else{ 
     663if(c=="\b"){ 
     664res+="\\b"; 
     665}else{ 
     666if(c=="\f"){ 
     667res+="\\f"; 
     668}else{ 
     669if(c=="\n"){ 
     670res+="\\n"; 
     671}else{ 
     672if(c=="\r"){ 
     673res+="\\r"; 
     674}else{ 
     675if(c=="\t"){ 
     676res+="\\t"; 
     677}else{ 
     678if(o.charCodeAt(i)<=31){ 
     679var hex=o.charCodeAt(i).toString(16); 
     680if(hex.length<2){ 
     681hex="0"+hex; 
     682
     683res+="\\u00"+hex.toUpperCase(); 
     684}else{ 
     685res+=c; 
     686
     687
     688
     689
     690
     691
     692
     693
     694
     695return "\""+res+"\""; 
     696
     697
    658698} 
    659699var me=arguments.callee; 
    660 var _ec
     700var _ee
    661701if(typeof (o.__json__)=="function"){ 
    662 _ec=o.__json__(); 
    663 if(o!==_ec){ 
    664 return me(_ec); 
     702_ee=o.__json__(); 
     703if(o!==_ee){ 
     704return me(_ee); 
    665705} 
    666706} 
    667707if(typeof (o.json)=="function"){ 
    668 _ec=o.json(); 
    669 if(o!==_ec){ 
    670 return me(_ec); 
     708_ee=o.json(); 
     709if(o!==_ee){ 
     710return me(_ee); 
    671711} 
    672712} 
     
    676716var val=me(o[i]); 
    677717if(typeof (val)!="string"){ 
    678 val="undefined"
     718continue
    679719} 
    680720res.push(val); 
     
    682722return "["+res.join(", ")+"]"; 
    683723} 
     724var m=MochiKit.Base; 
    684725try{ 
    685 _ec=m.jsonRegistry.match(o); 
    686 if(o!==_ec){ 
    687 return me(_ec); 
     726_ee=m.jsonRegistry.match(o); 
     727if(o!==_ee){ 
     728return me(_ee); 
    688729} 
    689730} 
     
    701742res=[]; 
    702743for(var k in o){ 
    703 var _f1
     744var _f2
    704745if(typeof (k)=="number"){ 
    705 _f1="\""+k+"\""; 
     746_f2="\""+k+"\""; 
    706747}else{ 
    707748if(typeof (k)=="string"){ 
    708 _f1=_ea(k); 
     749_f2=me(k); 
    709750}else{ 
    710751continue; 
     
    715756continue; 
    716757} 
    717 res.push(_f1+":"+val); 
     758res.push(_f2+":"+val); 
    718759} 
    719760return "{"+res.join(", ")+"}"; 
    720761},objEqual:function(a,b){ 
    721762return (MochiKit.Base.compare(a,b)===0); 
    722 },arrayEqual:function(_f4,arr){ 
    723 if(_f4.length!=arr.length){ 
     763},arrayEqual:function(_f5,arr){ 
     764if(_f5.length!=arr.length){ 
    724765return false; 
    725766} 
    726 return (MochiKit.Base.compare(_f4,arr)===0); 
     767return (MochiKit.Base.compare(_f5,arr)===0); 
    727768},concat:function(){ 
    728 var _f6=[]; 
    729 var _f7=MochiKit.Base.extend; 
     769var _f7=[]; 
     770var _f8=MochiKit.Base.extend; 
    730771for(var i=0;i<arguments.length;i++){ 
    731 _f7(_f6,arguments[i]); 
    732 } 
    733 return _f6
     772_f8(_f7,arguments[i]); 
     773} 
     774return _f7
    734775},keyComparator:function(key){ 
    735776var m=MochiKit.Base; 
    736 var _fb=m.compare; 
     777var _fc=m.compare; 
    737778if(arguments.length==1){ 
    738779return function(a,b){ 
    739 return _fb(a[key],b[key]); 
    740 }; 
    741 } 
    742 var _fe=m.extend(null,arguments); 
     780return _fc(a[key],b[key]); 
     781}; 
     782} 
     783var _ff=m.extend(null,arguments); 
    743784return function(a,b){ 
    744785var rval=0; 
    745 for(var i=0;(rval===0)&&(i<_fe.length);i++){ 
    746 var key=_fe[i]; 
    747 rval=_fb(a[key],b[key]); 
     786for(var i=0;(rval===0)&&(i<_ff.length);i++){ 
     787var key=_ff[i]; 
     788rval=_fc(a[key],b[key]); 
    748789} 
    749790return rval; 
    750791}; 
    751792},reverseKeyComparator:function(key){ 
    752 var _105=MochiKit.Base.keyComparator.apply(this,arguments); 
     793var _106=MochiKit.Base.keyComparator.apply(this,arguments); 
    753794return function(a,b){ 
    754 return _105(b,a); 
     795return _106(b,a); 
    755796}; 
    756797},partial:function(func){ 
    757798var m=MochiKit.Base; 
    758799return m.bind.apply(this,m.extend([func,undefined],arguments,1)); 
    759 },listMinMax:function(_10a,lst){ 
     800},listMinMax:function(_10b,lst){ 
    760801if(lst.length===0){ 
    761802return null; 
    762803} 
    763804var cur=lst[0]; 
    764 var _10d=MochiKit.Base.compare; 
     805var _10e=MochiKit.Base.compare; 
    765806for(var i=1;i<lst.length;i++){ 
    766807var o=lst[i]; 
    767 if(_10d(o,cur)==_10a){ 
     808if(_10e(o,cur)==_10b){ 
    768809cur=o; 
    769810} 
     
    774815},objMin:function(){ 
    775816return MochiKit.Base.listMinMax(-1,arguments); 
    776 },findIdentical:function(lst,_111,_112,end){ 
     817},findIdentical:function(lst,_112,_113,end){ 
    777818if(typeof (end)=="undefined"||end===null){ 
    778819end=lst.length; 
    779820} 
    780 if(typeof (_112)=="undefined"||_112===null){ 
    781 _112=0; 
    782 } 
    783 for(var i=_112;i<end;i++){ 
    784 if(lst[i]===_111){ 
     821if(typeof (_113)=="undefined"||_113===null){ 
     822_113=0; 
     823} 
     824for(var i=_113;i<end;i++){ 
     825if(lst[i]===_112){ 
    785826return i; 
    786827} 
     
    791832var m=MochiKit.Base; 
    792833var args=m.extend(null,arguments); 
    793 var _118=args.length; 
     834var _119=args.length; 
    794835while(args.length){ 
    795836var o=args.shift(); 
    796837if(o&&typeof (o)=="object"&&typeof (o.length)=="number"){ 
    797 _118+=o.length-1; 
     838_119+=o.length-1; 
    798839for(var i=o.length-1;i>=0;i--){ 
    799840sum+=o[i]; 
     
    803844} 
    804845} 
    805 if(_118<=0){ 
     846if(_119<=0){ 
    806847throw new TypeError("mean() requires at least one argument"); 
    807848} 
    808 return sum/_118
     849return sum/_119
    809850},median:function(){ 
    810851var data=MochiKit.Base.flattenArguments(arguments); 
     
    814855data.sort(compare); 
    815856if(data.length%2==0){ 
    816 var _11c=data.length/2; 
    817 return (data[_11c]+data[_11c-1])/2; 
     857var _11d=data.length/2; 
     858return (data[_11d]+data[_11d-1])/2; 
    818859}else{ 
    819860return data[(data.length-1)/2]; 
    820861} 
    821 },findValue:function(lst,_11e,_11f,end){ 
     862},findValue:function(lst,_11f,_120,end){ 
    822863if(typeof (end)=="undefined"||end===null){ 
    823864end=lst.length; 
    824865} 
    825 if(typeof (_11f)=="undefined"||_11f===null){ 
    826 _11f=0; 
     866if(typeof (_120)=="undefined"||_120===null){ 
     867_120=0; 
    827868} 
    828869var cmp=MochiKit.Base.compare; 
    829 for(var i=_11f;i<end;i++){ 
    830 if(cmp(lst[i],_11e)===0){ 
     870for(var i=_120;i<end;i++){ 
     871if(cmp(lst[i],_11f)===0){ 
    831872return i; 
    832873} 
    833874} 
    834875return -1; 
    835 },nodeWalk:function(node,_124){ 
    836 var _125=[node]; 
    837 var _126=MochiKit.Base.extend; 
    838 while(_125.length){ 
    839 var res=_124(_125.shift()); 
     876},nodeWalk:function(node,_125){ 
     877var _126=[node]; 
     878var _127=MochiKit.Base.extend; 
     879while(_126.length){ 
     880var res=_125(_126.shift()); 
    840881if(res){ 
    841 _126(_125,res); 
    842 } 
    843 } 
    844 },nameFunctions:function(_128){ 
    845 var base=_128.NAME; 
     882_127(_126,res); 
     883} 
     884} 
     885},nameFunctions:function(_129){ 
     886var base=_129.NAME; 
    846887if(typeof (base)=="undefined"){ 
    847888base=""; 
     
    849890base=base+"."; 
    850891} 
    851 for(var name in _128){ 
    852 var o=_128[name]; 
     892for(var name in _129){ 
     893var o=_129[name]; 
    853894if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){ 
    854895try{ 
     
    859900} 
    860901} 
    861 },queryString:function(_12c,_12d){ 
    862 if(typeof (MochiKit.DOM)!="undefined"&&arguments.length==1&&(typeof (_12c)=="string"||(typeof (_12c.nodeType)!="undefined"&&_12c.nodeType>0))){ 
    863 var kv=MochiKit.DOM.formContents(_12c); 
    864 _12c=kv[0]; 
    865 _12d=kv[1]; 
     902},queryString:function(_12d,_12e){ 
     903if(typeof (MochiKit.DOM)!="undefined"&&arguments.length==1&&(typeof (_12d)=="string"||(typeof (_12d.nodeType)!="undefined"&&_12d.nodeType>0))){ 
     904var kv=MochiKit.DOM.formContents(_12d); 
     905_12d=kv[0]; 
     906_12e=kv[1]; 
    866907}else{ 
    867908if(arguments.length==1){ 
    868 if(typeof (_12c.length)=="number"&&_12c.length==2){ 
    869 return arguments.callee(_12c[0],_12c[1]); 
    870 
    871 var o=_12c; 
    872 _12c=[]; 
     909if(typeof (_12d.length)=="number"&&_12d.length==2){ 
     910return arguments.callee(_12d[0],_12d[1]); 
     911
     912var o=_12d; 
    873913_12d=[]; 
     914_12e=[]; 
    874915for(var k in o){ 
    875916var v=o[k]; 
     
    879920if(MochiKit.Base.isArrayLike(v)){ 
    880921for(var i=0;i<v.length;i++){ 
    881 _12c.push(k); 
    882 _12d.push(v[i]); 
    883 } 
    884 }else{ 
    885 _12c.push(k); 
    886 _12d.push(v); 
     922_12d.push(k); 
     923_12e.push(v[i]); 
     924} 
     925}else{ 
     926_12d.push(k); 
     927_12e.push(v); 
    887928} 
    888929} 
     
    891932} 
    892933var rval=[]; 
    893 var len=Math.min(_12c.length,_12d.length); 
    894 var _135=MochiKit.Base.urlEncode; 
     934var len=Math.min(_12d.length,_12e.length); 
     935var _136=MochiKit.Base.urlEncode; 
    895936for(var i=0;i<len;i++){ 
    896 v=_12d[i]; 
     937v=_12e[i]; 
    897938if(typeof (v)!="undefined"&&v!==null){ 
    898 rval.push(_135(_12c[i])+"="+_135(v)); 
     939rval.push(_136(_12d[i])+"="+_136(v)); 
    899940} 
    900941} 
    901942return rval.join("&"); 
    902 },parseQueryString:function(_136,_137){ 
    903 var qstr=(_136.charAt(0)=="?")?_136.substring(1):_136
    904 var _139=qstr.replace(/\+/g,"%20").split(/\&amp\;|\&\#38\;|\&#x26;|\&/); 
     943},parseQueryString:function(_137,_138){ 
     944var qstr=(_137.charAt(0)=="?")?_137.substring(1):_137
     945var _13a=qstr.replace(/\+/g,"%20").split(/\&amp\;|\&\#38\;|\&#x26;|\&/); 
    905946var o={}; 
    906 var _13b
     947var _13c
    907948if(typeof (decodeURIComponent)!="undefined"){ 
    908 _13b=decodeURIComponent; 
    909 }else{ 
    910 _13b=unescape; 
    911 } 
    912 if(_137){ 
    913 for(var i=0;i<_139.length;i++){ 
    914 var pair=_139[i].split("="); 
    915 var name=_13b(pair.shift()); 
     949_13c=decodeURIComponent; 
     950}else{ 
     951_13c=unescape; 
     952} 
     953if(_138){ 
     954for(var i=0;i<_13a.length;i++){ 
     955var pair=_13a[i].split("="); 
     956var name=_13c(pair.shift()); 
    916957if(!name){ 
    917958continue; 
     
    922963o[name]=arr; 
    923964} 
    924 arr.push(_13b(pair.join("="))); 
    925 } 
    926 }else{ 
    927 for(i=0;i<_139.length;i++){ 
    928 pair=_139[i].split("="); 
     965arr.push(_13c(pair.join("="))); 
     966} 
     967}else{ 
     968for(i=0;i<_13a.length;i++){ 
     969pair=_13a[i].split("="); 
    929970var name=pair.shift(); 
    930971if(!name){ 
    931972continue; 
    932973} 
    933 o[_13b(name)]=_13b(pair.join("=")); 
     974o[_13c(name)]=_13c(pair.join("=")); 
    934975} 
    935976} 
     
    939980this.pairs=[]; 
    940981}; 
    941 MochiKit.Base.AdapterRegistry.prototype={register:function(name,_141,wrap,_143){ 
    942 if(_143){ 
    943 this.pairs.unshift([name,_141,wrap]); 
    944 }else{ 
    945 this.pairs.push([name,_141,wrap]); 
     982MochiKit.Base.AdapterRegistry.prototype={register:function(name,_142,wrap,_144){ 
     983if(_144){ 
     984this.pairs.unshift([name,_142,wrap]); 
     985}else{ 
     986this.pairs.push([name,_142,wrap]); 
    946987} 
    947988},match:function(){ 
     
    9651006MochiKit.Base.EXPORT=["flattenArray","noop","camelize","counter","clone","extend","update","updatetree","setdefault","keys","values","items","NamedError","operator","forwardCall","itemgetter","typeMatcher","isCallable","isUndefined","isUndefinedOrNull","isNull","isEmpty","isNotEmpty","isArrayLike","isDateLike","xmap","map","xfilter","filter","methodcaller","compose","bind","bindMethods","NotFound","AdapterRegistry","registerComparator","compare","registerRepr","repr","objEqual","arrayEqual","concat","keyComparator","reverseKeyComparator","partial","merge","listMinMax","listMax","listMin","objMax","objMin","nodeWalk","zip","urlEncode","queryString","serializeJSON","registerJSON","evalJSON","parseQueryString","findValue","findIdentical","flattenArguments","method","average","mean","median"]; 
    9661007MochiKit.Base.EXPORT_OK=["nameFunctions","comparatorRegistry","reprRegistry","jsonRegistry","compareDateLike","compareArrayLike","reprArrayLike","reprString","reprNumber"]; 
    967 MochiKit.Base._exportSymbols=function(_149,_14a){ 
     1008MochiKit.Base._exportSymbols=function(_14a,_14b){ 
    9681009if(!MochiKit.__export__){ 
    9691010return; 
    9701011} 
    971 var all=_14a.EXPORT_TAGS[":all"]; 
     1012var all=_14b.EXPORT_TAGS[":all"]; 
    9721013for(var i=0;i<all.length;i++){ 
    973 _149[all[i]]=_14a[all[i]]; 
     1014_14a[all[i]]=_14b[all[i]]; 
    9741015} 
    9751016}; 
     
    9801021m.find=m.findValue; 
    9811022if(typeof (encodeURIComponent)!="undefined"){ 
    982 m.urlEncode=function(_14e){ 
    983 return encodeURIComponent(_14e).replace(/\'/g,"%27"); 
    984 }; 
    985 }else{ 
    9861023m.urlEncode=function(_14f){ 
    987 return escape(_14f).replace(/\+/g,"%2B").replace(/\"/g,"%22").rval.replace(/\'/g,"%27"); 
     1024return encodeURIComponent(_14f).replace(/\'/g,"%27"); 
     1025}; 
     1026}else{ 
     1027m.urlEncode=function(_150){ 
     1028return escape(_150).replace(/\+/g,"%2B").replace(/\"/g,"%22").rval.replace(/\'/g,"%27"); 
    9881029}; 
    9891030} 
     
    10361077},toString:function(){ 
    10371078return this.__repr__(); 
    1038 },registerIteratorFactory:function(name,_153,_154,_155){ 
    1039 MochiKit.Iter.iteratorRegistry.register(name,_153,_154,_155); 
    1040 },iter:function(_156,_157){ 
     1079},registerIteratorFactory:function(name,_154,_155,_156){ 
     1080MochiKit.Iter.iteratorRegistry.register(name,_154,_155,_156); 
     1081},iter:function(_157,_158){ 
    10411082var self=MochiKit.Iter; 
    10421083if(arguments.length==2){ 
    10431084return self.takewhile(function(a){ 
    1044 return a!=_157
    1045 },_156); 
    1046 } 
    1047 if(typeof (_156.next)=="function"){ 
    1048 return _156
    1049 }else{ 
    1050 if(typeof (_156.iter)=="function"){ 
    1051 return _156.iter(); 
     1085return a!=_158
     1086},_157); 
     1087} 
     1088if(typeof (_157.next)=="function"){ 
     1089return _157
     1090}else{ 
     1091if(typeof (_157.iter)=="function"){ 
     1092return _157.iter(); 
    10521093} 
    10531094} 
    10541095try{ 
    1055 return self.iteratorRegistry.match(_156); 
     1096return self.iteratorRegistry.match(_157); 
    10561097} 
    10571098catch(e){ 
    10581099var m=MochiKit.Base; 
    10591100if(e==m.NotFound){ 
    1060 e=new TypeError(typeof (_156)+": "+m.repr(_156)+" is not iterable"); 
     1101e=new TypeError(typeof (_157)+": "+m.repr(_157)+" is not iterable"); 
    10611102} 
    10621103throw e; 
     
    10741115var m=MochiKit.Base; 
    10751116var lst=[]; 
    1076 var _161=self.iter(p); 
     1117var _162=self.iter(p); 
    10771118return {repr:function(){ 
    10781119return "cycle(...)"; 
    10791120},toString:m.forwardCall("repr"),next:function(){ 
    10801121try{ 
    1081 var rval=_161.next(); 
     1122var rval=_162.next(); 
    10821123lst.push(rval); 
    10831124return rval; 
     
    11191160return elem; 
    11201161}}; 
    1121 },next:function(_167){ 
    1122 return _167.next(); 
     1162},next:function(_168){ 
     1163return _168.next(); 
    11231164},izip:function(p,q){ 
    11241165var m=MochiKit.Base; 
    11251166var self=MochiKit.Iter; 
    11261167var next=self.next; 
    1127 var _16d=m.map(self.iter,arguments); 
     1168var _16e=m.map(self.iter,arguments); 
    11281169return {repr:function(){ 
    11291170return "izip(...)"; 
    11301171},toString:m.forwardCall("repr"),next:function(){ 
    1131 return m.map(next,_16d); 
     1172return m.map(next,_16e); 
    11321173}}; 
    11331174},ifilter:function(pred,seq){ 
     
    11691210var m=MochiKit.Base; 
    11701211seq=self.iter(seq); 
    1171 var _179=0; 
     1212var _17a=0; 
    11721213var stop=0; 
    11731214var step=1; 
     
    11771218}else{ 
    11781219if(arguments.length==3){ 
    1179 _179=arguments[1]; 
     1220_17a=arguments[1]; 
    11801221stop=arguments[2]; 
    11811222}else{ 
    1182 _179=arguments[1]; 
     1223_17a=arguments[1]; 
    11831224stop=arguments[2]; 
    11841225step=arguments[3]; 
     
    11861227} 
    11871228return {repr:function(){ 
    1188 return "islice("+["...",_179,stop,step].join(", ")+")"; 
     1229return "islice("+["...",_17a,stop,step].join(", ")+")"; 
    11891230},toString:m.forwardCall("repr"),next:function(){ 
    11901231var rval; 
    1191 while(i<_179){ 
     1232while(i<_17a){ 
    11921233rval=seq.next(); 
    11931234i++; 
    11941235} 
    1195 if(_179>=stop){ 
     1236if(_17a>=stop){ 
    11961237throw self.StopIteration; 
    11971238} 
    1198 _179+=step; 
     1239_17a+=step; 
    11991240return rval; 
    12001241}}; 
     
    12021243var m=MochiKit.Base; 
    12031244var self=MochiKit.Iter; 
    1204 var _183=m.map(self.iter,m.extend(null,arguments,1)); 
     1245var _184=m.map(self.iter,m.extend(null,arguments,1)); 
    12051246var map=m.map; 
    12061247var next=self.next; 
     
    12081249return "imap(...)"; 
    12091250},toString:m.forwardCall("repr"),next:function(){ 
    1210 return fun.apply(this,map(next,_183)); 
     1251return fun.apply(this,map(next,_184)); 
    12111252}}; 
    12121253},applymap:function(fun,seq,self){ 
     
    12241265return self.iter(arguments[0]); 
    12251266} 
    1226 var _18e=m.map(self.iter,arguments); 
     1267var _18f=m.map(self.iter,arguments); 
    12271268return {repr:function(){ 
    12281269return "chain(...)"; 
    12291270},toString:m.forwardCall("repr"),next:function(){ 
    1230 while(_18e.length>1){ 
     1271while(_18f.length>1){ 
    12311272try{ 
    1232 var _18f=_18e[0].next(); 
    1233 return _18f
     1273var _190=_18f[0].next(); 
     1274return _190
    12341275} 
    12351276catch(e){ 
     
    12371278throw e; 
    12381279} 
    1239 _18e.shift(); 
    1240 var _18f=_18e[0].next(); 
    1241 return _18f
    1242 } 
    1243 } 
    1244 if(_18e.length==1){ 
    1245 var arg=_18e.shift(); 
     1280_18f.shift(); 
     1281var _190=_18f[0].next(); 
     1282return _190
     1283} 
     1284} 
     1285if(_18f.length==1){ 
     1286var arg=_18f.shift(); 
    12461287this.next=m.bind("next",arg); 
    12471288return this.next(); 
     
    12801321return rval; 
    12811322}}; 
    1282 },_tee:function(_19a,sync,_19c){ 
    1283 sync.pos[_19a]=-1; 
     1323},_tee:function(_19b,sync,_19d){ 
     1324sync.pos[_19b]=-1; 
    12841325var m=MochiKit.Base; 
    1285 var _19e=m.listMin; 
     1326var _19f=m.listMin; 
    12861327return {repr:function(){ 
    1287 return "tee("+_19a+", ...)"; 
     1328return "tee("+_19b+", ...)"; 
    12881329},toString:m.forwardCall("repr"),next:function(){ 
    12891330var rval; 
    1290 var i=sync.pos[_19a]; 
     1331var i=sync.pos[_19b]; 
    12911332if(i==sync.max){ 
    1292 rval=_19c.next(); 
     1333rval=_19d.next(); 
    12931334sync.deque.push(rval); 
    12941335sync.max+=1; 
    1295 sync.pos[_19a]+=1; 
     1336sync.pos[_19b]+=1; 
    12961337}else{ 
    12971338rval=sync.deque[i-sync.min]; 
    1298 sync.pos[_19a]+=1; 
    1299 if(i==sync.min&&_19e(sync.pos)!=sync.min){ 
     1339sync.pos[_19b]+=1; 
     1340if(i==sync.min&&_19f(sync.pos)!=sync.min){ 
    13001341sync.min+=1; 
    13011342sync.deque.shift(); 
     
    13041345return rval; 
    13051346}}; 
    1306 },tee:function(_1a1,n){ 
     1347},tee:function(_1a2,n){ 
    13071348var rval=[]; 
    13081349var sync={"pos":[],"deque":[],"max":-1,"min":-1}; 
     
    13111352} 
    13121353var self=MochiKit.Iter; 
    1313 _1a1=self.iter(_1a1); 
     1354_1a2=self.iter(_1a2); 
    13141355var _tee=self._tee; 
    13151356for(var i=0;i<n;i++){ 
    1316 rval.push(_tee(i,sync,_1a1)); 
     1357rval.push(_tee(i,sync,_1a2)); 
    13171358} 
    13181359return rval; 
    1319 },list:function(_1a8){ 
     1360},list:function(_1a9){ 
    13201361var rval; 
    1321 if(_1a8 instanceof Array){ 
    1322 return _1a8.slice(); 
    1323 } 
    1324 if(typeof (_1a8)=="function"&&!(_1a8 instanceof Function)&&typeof (_1a8.length)=="number"){ 
     1362if(_1a9 instanceof Array){ 
     1363return _1a9.slice(); 
     1364} 
     1365if(typeof (_1a9)=="function"&&!(_1a9 instanceof Function)&&typeof (_1a9.length)=="number"){ 
    13251366rval=[]; 
    1326 for(var i=0;i<_1a8.length;i++){ 
    1327 rval.push(_1a8[i]); 
     1367for(var i=0;i<_1a9.length;i++){ 
     1368rval.push(_1a9[i]); 
    13281369} 
    13291370return rval; 
    13301371} 
    13311372var self=MochiKit.Iter; 
    1332 _1a8=self.iter(_1a8); 
     1373_1a9=self.iter(_1a9); 
    13331374var rval=[]; 
    1334 var _1ac
     1375var _1ad
    13351376try{ 
    13361377while(true){ 
    1337 _1ac=_1a8.next(); 
    1338 rval.push(_1ac); 
     1378_1ad=_1a9.next(); 
     1379rval.push(_1ad); 
    13391380} 
    13401381} 
     
    13461387} 
    13471388return undefined; 
    1348 },reduce:function(fn,_1ae,_1af){ 
     1389},reduce:function(fn,_1af,_1b0){ 
    13491390var i=0; 
    1350 var x=_1af
     1391var x=_1b0
    13511392var self=MochiKit.Iter; 
    1352 _1ae=self.iter(_1ae); 
     1393_1af=self.iter(_1af); 
    13531394if(arguments.length<3){ 
    13541395try{ 
    1355 x=_1ae.next(); 
     1396x=_1af.next(); 
    13561397} 
    13571398catch(e){ 
     
    13651406try{ 
    13661407while(true){ 
    1367 x=fn(x,_1ae.next()); 
     1408x=fn(x,_1af.next()); 
    13681409} 
    13691410} 
     
    13751416return x; 
    13761417},range:function(){ 
    1377 var _1b3=0; 
     1418var _1b4=0; 
    13781419var stop=0; 
    13791420var step=1; 
     
    13821423}else{ 
    13831424if(arguments.length==2){ 
    1384 _1b3=arguments[0]; 
     1425_1b4=arguments[0]; 
    13851426stop=arguments[1]; 
    13861427}else{ 
    13871428if(arguments.length==3){ 
    1388 _1b3=arguments[0]; 
     1429_1b4=arguments[0]; 
    13891430stop=arguments[1]; 
    13901431step=arguments[2]; 
     
    13981439} 
    13991440return {next:function(){ 
    1400 if((step>0&&_1b3>=stop)||(step<0&&_1b3<=stop)){ 
     1441if((step>0&&_1b4>=stop)||(step<0&&_1b4<=stop)){ 
    14011442throw MochiKit.Iter.StopIteration; 
    14021443} 
    1403 var rval=_1b3
    1404 _1b3+=step; 
     1444var rval=_1b4
     1445_1b4+=step; 
    14051446return rval; 
    14061447},repr:function(){ 
    1407 return "range("+[_1b3,stop,step].join(", ")+")"; 
     1448return "range("+[_1b4,stop,step].join(", ")+")"; 
    14081449},toString:MochiKit.Base.forwardCall("repr")}; 
    1409 },sum:function(_1b7,_1b8){ 
    1410 if(typeof (_1b8)=="undefined"||_1b8===null){ 
    1411 _1b8=0; 
    1412 } 
    1413 var x=_1b8
     1450},sum:function(_1b8,_1b9){ 
     1451if(typeof (_1b9)=="undefined"||_1b9===null){ 
     1452_1b9=0; 
     1453} 
     1454var x=_1b9
    14141455var self=MochiKit.Iter; 
    1415 _1b7=self.iter(_1b7); 
     1456_1b8=self.iter(_1b8); 
    14161457try{ 
    14171458while(true){ 
    1418 x+=_1b7.next(); 
     1459x+=_1b8.next(); 
    14191460} 
    14201461} 
     
    14251466} 
    14261467return x; 
    1427 },exhaust:function(_1bb){ 
     1468},exhaust:function(_1bc){ 
    14281469var self=MochiKit.Iter; 
    1429 _1bb=self.iter(_1bb); 
     1470_1bc=self.iter(_1bc); 
    14301471try{ 
    14311472while(true){ 
    1432 _1bb.next(); 
     1473_1bc.next(); 
    14331474} 
    14341475} 
     
    14381479} 
    14391480} 
    1440 },forEach:function(_1bd,func,self){ 
     1481},forEach:function(_1be,func,self){ 
    14411482var m=MochiKit.Base; 
    14421483if(arguments.length>2){ 
    14431484func=m.bind(func,self); 
    14441485} 
    1445 if(m.isArrayLike(_1bd)){ 
     1486if(m.isArrayLike(_1be)){ 
    14461487try{ 
    1447 for(var i=0;i<_1bd.length;i++){ 
    1448 func(_1bd[i]); 
     1488for(var i=0;i<_1be.length;i++){ 
     1489func(_1be[i]); 
    14491490} 
    14501491} 
     
    14561497}else{ 
    14571498self=MochiKit.Iter; 
    1458 self.exhaust(self.imap(func,_1bd)); 
    1459 } 
    1460 },every:function(_1c2,func){ 
     1499self.exhaust(self.imap(func,_1be)); 
     1500} 
     1501},every:function(_1c3,func){ 
    14611502var self=MochiKit.Iter; 
    14621503try{ 
    1463 self.ifilterfalse(func,_1c2).next(); 
     1504self.ifilterfalse(func,_1c3).next(); 
    14641505return false; 
    14651506} 
     
    14701511return true; 
    14711512} 
    1472 },sorted:function(_1c5,cmp){ 
    1473 var rval=MochiKit.Iter.list(_1c5); 
     1513},sorted:function(_1c6,cmp){ 
     1514var rval=MochiKit.Iter.list(_1c6); 
    14741515if(arguments.length==1){ 
    14751516cmp=MochiKit.Base.compare; 
     
    14771518rval.sort(cmp); 
    14781519return rval; 
    1479 },reversed:function(_1c8){ 
    1480 var rval=MochiKit.Iter.list(_1c8); 
     1520},reversed:function(_1c9){ 
     1521var rval=MochiKit.Iter.list(_1c9); 
    14811522rval.reverse(); 
    14821523return rval; 
    1483 },some:function(_1ca,func){ 
     1524},some:function(_1cb,func){ 
    14841525var self=MochiKit.Iter; 
    14851526try{ 
    1486 self.ifilter(func,_1ca).next(); 
     1527self.ifilter(func,_1cb).next(); 
    14871528return true; 
    14881529} 
     
    14931534return false; 
    14941535} 
    1495 },iextend:function(lst,_1ce){ 
    1496 if(MochiKit.Base.isArrayLike(_1ce)){ 
    1497 for(var i=0;i<_1ce.length;i++){ 
    1498 lst.push(_1ce[i]); 
     1536},iextend:function(lst,_1cf){ 
     1537if(MochiKit.Base.isArrayLike(_1cf)){ 
     1538for(var i=0;i<_1cf.length;i++){ 
     1539lst.push(_1cf[i]); 
    14991540} 
    15001541}else{ 
    15011542var self=MochiKit.Iter; 
    1502 _1ce=self.iter(_1ce); 
     1543_1cf=self.iter(_1cf); 
    15031544try{ 
    15041545while(true){ 
    1505 lst.push(_1ce.next()); 
     1546lst.push(_1cf.next()); 
    15061547} 
    15071548} 
     
    15131554} 
    15141555return lst; 
    1515 },groupby:function(_1d1,_1d2){ 
     1556},groupby:function(_1d2,_1d3){ 
    15161557var m=MochiKit.Base; 
    15171558var self=MochiKit.Iter; 
    15181559if(arguments.length<2){ 
    1519 _1d2=m.operator.identity; 
    1520 } 
    1521 _1d1=self.iter(_1d1); 
     1560_1d3=m.operator.identity; 
     1561} 
     1562_1d2=self.iter(_1d2); 
    15221563var pk=undefined; 
    15231564var k=undefined; 
    15241565var v; 
    15251566function fetch(){ 
    1526 v=_1d1.next(); 
    1527 k=_1d2(v); 
     1567v=_1d2.next(); 
     1568k=_1d3(v); 
    15281569} 
    15291570function eat(){ 
     
    15321573return ret; 
    15331574} 
    1534 var _1d9=true; 
    1535 var _1da=m.compare; 
     1575var _1da=true; 
     1576var _1db=m.compare; 
    15361577return {repr:function(){ 
    15371578return "groupby(...)"; 
    15381579},next:function(){ 
    1539 while(_1da(k,pk)===0){ 
     1580while(_1db(k,pk)===0){ 
    15401581fetch(); 
    1541 if(_1d9){ 
    1542 _1d9=false; 
     1582if(_1da){ 
     1583_1da=false; 
    15431584break; 
    15441585} 
     
    15491590fetch(); 
    15501591} 
    1551 if(_1da(k,pk)!==0){ 
     1592if(_1db(k,pk)!==0){ 
    15521593throw self.StopIteration; 
    15531594} 
     
    15551596}}]; 
    15561597}}; 
    1557 },groupby_as_array:function(_1db,_1dc){ 
     1598},groupby_as_array:function(_1dc,_1dd){ 
    15581599var m=MochiKit.Base; 
    15591600var self=MochiKit.Iter; 
    15601601if(arguments.length<2){ 
    1561 _1dc=m.operator.identity; 
    1562 } 
    1563 _1db=self.iter(_1db); 
    1564 var _1df=[]; 
    1565 var _1e0=true; 
    1566 var _1e1
    1567 var _1e2=m.compare; 
     1602_1dd=m.operator.identity; 
     1603} 
     1604_1dc=self.iter(_1dc); 
     1605var _1e0=[]; 
     1606var _1e1=true; 
     1607var _1e2
     1608var _1e3=m.compare; 
    15681609while(true){ 
    15691610try{ 
    1570 var _1e3=_1db.next(); 
    1571 var key=_1dc(_1e3); 
     1611var _1e4=_1dc.next(); 
     1612var key=_1dd(_1e4); 
    15721613} 
    15731614catch(e){ 
     
    15771618throw e; 
    15781619} 
    1579 if(_1e0||_1e2(key,_1e1)!==0){ 
    1580 var _1e5=[]; 
    1581 _1df.push([key,_1e5]); 
    1582 } 
    1583 _1e5.push(_1e3); 
    1584 _1e0=false; 
    1585 _1e1=key; 
    1586 } 
    1587 return _1df
    1588 },arrayLikeIter:function(_1e6){ 
     1620if(_1e1||_1e3(key,_1e2)!==0){ 
     1621var _1e6=[]; 
     1622_1e0.push([key,_1e6]); 
     1623} 
     1624_1e6.push(_1e4); 
     1625_1e1=false; 
     1626_1e2=key; 
     1627} 
     1628return _1e0
     1629},arrayLikeIter:function(_1e7){ 
    15891630var i=0; 
    15901631return {repr:function(){ 
    15911632return "arrayLikeIter(...)"; 
    15921633},toString:MochiKit.Base.forwardCall("repr"),next:function(){ 
    1593 if(i>=_1e6.length){ 
     1634if(i>=_1e7.length){ 
    15941635throw MochiKit.Iter.StopIteration; 
    15951636} 
    1596 return _1e6[i++]; 
     1637return _1e7[i++]; 
    15971638}}; 
    1598 },hasIterateNext:function(_1e8){ 
    1599 return (_1e8&&typeof (_1e8.iterateNext)=="function"); 
    1600 },iterateNextIter:function(_1e9){ 
     1639},hasIterateNext:function(_1e9){ 
     1640return (_1e9&&typeof (_1e9.iterateNext)=="function"); 
     1641},iterateNextIter:function(_1ea){ 
    16011642return {repr:function(){ 
    16021643return "iterateNextIter(...)"; 
    16031644},toString:MochiKit.Base.forwardCall("repr"),next:function(){ 
    1604 var rval=_1e9.iterateNext(); 
     1645var rval=_1ea.iterateNext(); 
    16051646if(rval===null||rval===undefined){ 
    16061647throw MochiKit.Iter.StopIteration; 
     
    16401681MochiKit.Logging.EXPORT=["LogLevel","LogMessage","Logger","alertListener","logger","log","logError","logDebug","logFatal","logWarning"]; 
    16411682MochiKit.Logging.EXPORT_OK=["logLevelAtLeast","isLogMessage","compareLogMessage"]; 
    1642 MochiKit.Logging.LogMessage=function(num,_1ed,info){ 
     1683MochiKit.Logging.LogMessage=function(num,_1ee,info){ 
    16431684this.num=num; 
    1644 this.level=_1ed
     1685this.level=_1ee
    16451686this.info=info; 
    16461687this.timestamp=new Date(); 
     
    16501691return "LogMessage("+m.map(m.repr,[this.num,this.level,this.info]).join(", ")+")"; 
    16511692},toString:MochiKit.Base.forwardCall("repr")}; 
    1652 MochiKit.Base.update(MochiKit.Logging,{logLevelAtLeast:function(_1f0){ 
     1693MochiKit.Base.update(MochiKit.Logging,{logLevelAtLeast:function(_1f1){ 
    16531694var self=MochiKit.Logging; 
    1654 if(typeof (_1f0)=="string"){ 
    1655 _1f0=self.LogLevel[_1f0]; 
     1695if(typeof (_1f1)=="string"){ 
     1696_1f1=self.LogLevel[_1f1]; 
    16561697} 
    16571698return function(msg){ 
    1658 var _1f3=msg.level; 
    1659 if(typeof (_1f3)=="string"){ 
    1660 _1f3=self.LogLevel[_1f3]; 
    1661 } 
    1662 return _1f3>=_1f0
     1699var _1f4=msg.level; 
     1700if(typeof (_1f4)=="string"){ 
     1701_1f4=self.LogLevel[_1f4]; 
     1702} 
     1703return _1f4>=_1f1
    16631704}; 
    16641705},isLogMessage:function(){ 
    1665 var _1f4=MochiKit.Logging.LogMessage; 
     1706var _1f5=MochiKit.Logging.LogMessage; 
    16661707for(var i=0;i<arguments.length;i++){ 
    1667 if(!(arguments[i] instanceof _1f4)){ 
     1708if(!(arguments[i] instanceof _1f5)){ 
    16681709return false; 
    16691710} 
     
    16751716alert("num: "+msg.num+"\nlevel: "+msg.level+"\ninfo: "+msg.info.join(" ")); 
    16761717}}); 
    1677 MochiKit.Logging.Logger=function(_1f9){ 
     1718MochiKit.Logging.Logger=function(_1fa){ 
    16781719this.counter=0; 
    1679 if(typeof (_1f9)=="undefined"||_1f9===null){ 
    1680 _1f9=-1; 
    1681 } 
    1682 this.maxSize=_1f9
     1720if(typeof (_1fa)=="undefined"||_1fa===null){ 
     1721_1fa=-1; 
     1722} 
     1723this.maxSize=_1fa
    16831724this._messages=[]; 
    16841725this.listeners={}; 
     
    17151756pair[1](msg); 
    17161757} 
    1717 },addListener:function(_1fe,_1ff,_200){ 
    1718 if(typeof (_1ff)=="string"){ 
    1719 _1ff=MochiKit.Logging.logLevelAtLeast(_1ff); 
    1720 } 
    1721 var _201=[_1ff,_200]; 
    1722 _201.ident=_1fe
    1723 this.listeners[_1fe]=_201
    1724 },removeListener:function(_202){ 
    1725 delete this.listeners[_202]; 
    1726 },baseLog:function(_203,_204){ 
    1727 var msg=new MochiKit.Logging.LogMessage(this.counter,_203,MochiKit.Base.extend(null,arguments,1)); 
     1758},addListener:function(_1ff,_200,_201){ 
     1759if(typeof (_200)=="string"){ 
     1760_200=MochiKit.Logging.logLevelAtLeast(_200); 
     1761} 
     1762var _202=[_200,_201]; 
     1763_202.ident=_1ff
     1764this.listeners[_1ff]=_202
     1765},removeListener:function(_203){ 
     1766delete this.listeners[_203]; 
     1767},baseLog:function(_204,_205){ 
     1768var msg=new MochiKit.Logging.LogMessage(this.counter,_204,MochiKit.Base.extend(null,arguments,1)); 
    17281769this._messages.push(msg); 
    17291770this.dispatchListeners(msg); 
     
    17351776this._messages.shift(); 
    17361777} 
    1737 },getMessages:function(_206){ 
    1738 var _207=0; 
    1739 if(!(typeof (_206)=="undefined"||_206===null)){ 
    1740 _207=Math.max(0,this._messages.length-_206); 
    1741 } 
    1742 return this._messages.slice(_207); 
    1743 },getMessageText:function(_208){ 
    1744 if(typeof (_208)=="undefined"||_208===null){ 
    1745 _208=30; 
    1746 } 
    1747 var _209=this.getMessages(_208); 
    1748 if(_209.length){ 
     1778},getMessages:function(_207){ 
     1779var _208=0; 
     1780if(!(typeof (_207)=="undefined"||_207===null)){ 
     1781_208=Math.max(0,this._messages.length-_207); 
     1782} 
     1783return this._messages.slice(_208); 
     1784},getMessageText:function(_209){ 
     1785if(typeof (_209)=="undefined"||_209===null){ 
     1786_209=30; 
     1787} 
     1788var _20a=this.getMessages(_209); 
     1789if(_20a.length){ 
    17491790var lst=map(function(m){ 
    17501791return "\n  ["+m.num+"] "+m.level+": "+m.info.join(" "); 
    1751 },_209); 
    1752 lst.unshift("LAST "+_209.length+" MESSAGES:"); 
     1792},_20a);