From eb8953e784b88e0e8f31fe9722825365fea85152 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Tue, 26 Feb 2013 21:08:35 -0800 Subject: [PATCH] Remove `isJSC` in `mobile` and `underscore` builds. [closes #196] Former-commit-id: 77ddbbcfcf17b5074a7fba137dc426f20a6ab5dd --- build.js | 11 ++++--- dist/lodash.compat.js | 2 +- dist/lodash.js | 2 +- dist/lodash.underscore.js | 7 +---- dist/lodash.underscore.min.js | 56 +++++++++++++++++------------------ test/test-build.js | 7 ++++- 6 files changed, 44 insertions(+), 41 deletions(-) diff --git a/build.js b/build.js index 24044c199..39fcdb193 100755 --- a/build.js +++ b/build.js @@ -844,8 +844,8 @@ */ function matchFunction(source, funcName) { var result = source.match(RegExp( - // match multi-line comment block (could be on a single line) - '(?:\\n +/\\*[^*]*\\*+(?:[^/][^*]*\\*+)*/\\n)?' + + // match multi-line comment block + '(?:\\n +/\\*[^*]*\\*+(?:[^/][^*]*\\*+)*/)?\\n' + // begin non-capturing group '( *)(?:' + // match a function declaration @@ -1109,6 +1109,7 @@ * @returns {String} Returns the modified source. */ function removeKeysOptimization(source) { + source = removeVar(source, 'isJSC'); source = removeVar(source, 'isKeysFast'); // remove optimized branch in `iteratorTemplate` @@ -1280,7 +1281,8 @@ // match a variable declaration that's not part of a declaration list '( *)var ' + varName + ' *= *(?:.+?(?:;|&&\\n[^;]+;)|(?:\\w+\\(|{)[\\s\\S]+?\\n\\1.+?;)\\n|' + // match a variable in a declaration list - '\\n +' + varName + ' *=.+?,' + '^ *' + varName + ' *=.+?,\\n', + 'm' ), ''); // remove a varaible at the start of a variable declaration list @@ -1703,6 +1705,7 @@ } if (isMobile || isUnderscore) { source = removeKeysOptimization(source); + source = removeSetImmediate(source); } if (isModern || isUnderscore) { source = removeHasDontEnumBug(source); @@ -2209,7 +2212,7 @@ if (isLegacy) { source = removeSetImmediate(source); - _.each(['isBindFast', 'isV8', 'nativeBind', 'nativeIsArray', 'nativeKeys', 'reNative'], function(varName) { + _.each(['isBindFast', 'isIeOpera', 'isV8', 'nativeBind', 'nativeIsArray', 'nativeKeys', 'reNative'], function(varName) { source = removeVar(source, varName); }); diff --git a/dist/lodash.compat.js b/dist/lodash.compat.js index 692b583ea..6f639b829 100644 --- a/dist/lodash.compat.js +++ b/dist/lodash.compat.js @@ -136,7 +136,7 @@ RegExp = context.RegExp, String = context.String; - /** Used for `Array`, `Math`, and `Object` method references */ + /** Used for `Array` and `Object` method references */ var arrayRef = Array(), objectRef = Object(); diff --git a/dist/lodash.js b/dist/lodash.js index f84d3d46c..a327fc3ce 100644 --- a/dist/lodash.js +++ b/dist/lodash.js @@ -130,7 +130,7 @@ RegExp = context.RegExp, String = context.String; - /** Used for `Array`, `Math`, and `Object` method references */ + /** Used for `Array` and `Object` method references */ var arrayRef = Array(), objectRef = Object(); diff --git a/dist/lodash.underscore.js b/dist/lodash.underscore.js index 9afbd4e28..24f5fe269 100644 --- a/dist/lodash.underscore.js +++ b/dist/lodash.underscore.js @@ -96,7 +96,7 @@ /*--------------------------------------------------------------------------*/ - /** Used for `Array`, `Math`, and `Object` method references */ + /** Used for `Array` and `Object` method references */ var arrayRef = Array(), objectRef = Object(); @@ -132,7 +132,6 @@ /** Detect various environments */ var isIeOpera = !!window.attachEvent, - isJSC = !/\n{2,}/.test(Function()), isV8 = nativeBind && !/\n|true/.test(nativeBind + isIeOpera); /* Detect if `Function#bind` exists and is inferred to be fast (all but V8) */ @@ -3485,10 +3484,6 @@ var args = slice(arguments, 1); return setTimeout(function() { func.apply(undefined, args); }, 1); } - // use `setImmediate` if it's available in Node.js - if (isV8 && freeModule && typeof setImmediate == 'function') { - defer = bind(setImmediate, window); - } /** * Creates a function that memoizes the result of `func`. If `resolver` is diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js index 05f80f2e6..d36fa462f 100644 --- a/dist/lodash.underscore.min.js +++ b/dist/lodash.underscore.min.js @@ -4,31 +4,31 @@ * Build: `lodash underscore -o ./dist/lodash.underscore.js` * Underscore.js 1.4.4 underscorejs.org/LICENSE */ -;(function(n){function t(n,t){var r;if(n&&vt[typeof n])for(r in t||(t=W),n)if(t(n[r],r,n)===nt)break}function r(n,t,r){if(n){t=t&&typeof r=="undefined"?t:i(t,r);var e=n.length;if(r=-1,typeof e=="number")for(;++rt||typeof n=="undefined")return 1;if(nr?0:r);++eo&&(o=f)}}else t=i(t,e),r(n,function(n,r,e){r=t(n,r,e),r>u&&(u=r,o=n)});return o}function q(n,t,e,u){var o=3>arguments.length;if(t=i(t,u,4),$t(n)){var a=-1,f=n.length;for(o&&(e=n[++a]);++aarguments.length;if(typeof u!="number")var a=zt(n),u=a.length;return t=i(t,e,4),N(n,function(e,i,f){i=a?a[--u]:--u,r=o?(o=L,n[i]):t(r,n[i],i,f)}),r}function B(n,t,e){var u; -if(t=i(t,e),$t(n)){e=-1;for(var o=n.length;++er?Rt(0,u+r):r||0)-1;else if(r)return e=C(n,t),n[e]===t?e:-1;for(;++e>>1,r(n[e])z(f,c))&&(r&&f.push(c),a.push(e))}return a}function U(n,t){return Bt||Ot&&2"']/g,ut=/['\n\r\t\u2028\u2029\\]/g,ot="[object Arguments]",it="[object Array]",at="[object Boolean]",ft="[object Date]",ct="[object Number]",lt="[object Object]",pt="[object RegExp]",st="[object String]",vt={"boolean":L,"function":J,object:J,number:L,string:L,undefined:L},ht={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"},gt=[],Y={},yt=n._,mt=RegExp("^"+(Y.valueOf+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),_t=Math.ceil,dt=n.clearTimeout,bt=gt.concat,jt=Math.floor,wt=Y.hasOwnProperty,At=gt.push,xt=n.setTimeout,Et=Y.toString,Ot=mt.test(Ot=l.bind)&&Ot,St=mt.test(St=Array.isArray)&&St,Ft=n.isFinite,Nt=n.isNaN,kt=mt.test(kt=Object.keys)&&kt,Rt=Math.max,qt=Math.min,It=Math.random,Y=!!n.attachEvent; -Function();var Y=Ot&&!/\n|true/.test(Ot+Y),Bt=Ot&&!Y,Dt=(Dt={0:1,length:1},gt.splice.call(Dt,0,1),Dt[0]),Mt=arguments.constructor==Object;e.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},s(arguments)||(s=function(n){return n?wt.call(n,"callee"):L});var $t=St||function(n){return Mt&&n instanceof Array||Et.call(n)==it},zt=kt?function(n){return j(n)?kt(n):[]}:v,Tt={"&":"&","<":"<",">":">",'"':""","'":"'"},Ct=m(Tt); -b(/x/)&&(b=function(n){return n instanceof Function||"[object Function]"==Et.call(n)});var Pt=k;Y&&X&&typeof setImmediate=="function"&&(V=U(setImmediate,n)),e.after=function(n,t){return 1>n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},e.bind=U,e.bindAll=function(n){for(var t=bt.apply(gt,arguments),r=1z(e,o,r)&&u.push(o)}return u},e.filter=S,e.flatten=$,e.forEach=N,e.functions=y,e.groupBy=function(n,t,r){var e={};return t=i(t,r),N(n,function(n,r,u){r=t(n,r,u)+"",(wt.call(e,r)?e[r]:e[r]=[]).push(n)}),e},e.initial=function(n,t,r){if(!n)return[];var e=0,u=n.length;if(typeof t!="number"&&t!=K){var o=u;for(t=i(t,r);o--&&t(n[o],o,n);)e++}else e=t==K||r?1:t||e;return l(n,0,qt(Rt(0,u-e),u))},e.intersection=function(n){var t=arguments,r=t.length,e=-1,u=n?n.length:0,o=[];n:for(;++ez(o,i)){for(var a=r;--a;)if(0>z(t[a],i))continue n; -o.push(i)}}return o},e.invert=m,e.invoke=function(n,t){var r=l(arguments,2),e=-1,u=typeof t=="function",o=n?n.length:0,i=Array(typeof o=="number"?o:0);return N(n,function(n){i[++e]=(u?t:n[t]).apply(n,r)}),i},e.keys=zt,e.map=k,e.max=R,e.memoize=function(n,t){var r={};return function(){var e=(t?t.apply(this,arguments):arguments[0])+"";return wt.call(r,e)?r[e]:r[e]=n.apply(this,arguments)}},e.min=function(n,t,e){var u=1/0,o=u;if(!t&&$t(n)){e=-1;for(var a=n.length;++ez(r,t,1)&&(e[t]=n)}),e},e.once=function(n){var t,r;return function(){return t?r:(t=J,r=n.apply(this,arguments),n=K,r)}},e.pairs=function(n){for(var t=-1,r=zt(n),e=r.length,u=Array(e);++tz(arguments,u,1)&&e.push(u)}return e},e.wrap=function(n,t){return function(){var r=[n];return At.apply(r,arguments),t.apply(this,r)}},e.zip=function(n){for(var t=-1,r=n?R(Pt(arguments,"length")):0,e=Array(r);++tr?Rt(0,e+r):qt(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},e.mixin=G,e.noConflict=function(){return n._=yt,this},e.random=function(n,t){return n==K&&t==K&&(t=1),n=+n||0,t==K&&(t=n,n=0),n+jt(It()*((+t||0)-n+1))},e.reduce=q,e.reduceRight=I,e.result=function(n,t){var r=n?n[t]:K; -return b(r)?n[t]():r},e.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:zt(n).length},e.some=B,e.sortedIndex=C,e.template=function(n,t,r){n||(n=""),r=g({},r,e.templateSettings);var u=0,o="__p+='",i=r.variable;n.replace(RegExp((r.escape||rt).source+"|"+(r.interpolate||rt).source+"|"+(r.evaluate||rt).source+"|$","g"),function(t,r,e,i,f){return o+=n.slice(u,f).replace(ut,a),r&&(o+="'+_['escape']("+r+")+'"),i&&(o+="';"+i+";__p+='"),e&&(o+="'+((__t=("+e+"))==null?'':__t)+'"),u=f+t.length,t -}),o+="';\n",i||(i="obj",o="with("+i+"||{}){"+o+"}"),o="function("+i+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+o+"return __p}";try{var f=Function("_","return "+o)(e)}catch(c){throw c.source=o,c}return t?f(t):(f.source=o,f)},e.unescape=function(n){return n==K?"":(n+"").replace(tt,p)},e.uniqueId=function(n){var t=++Z+"";return n?n+t:t},e.all=O,e.any=B,e.detect=F,e.foldl=q,e.foldr=I,e.include=E,e.inject=q,e.first=M,e.last=function(n,t,r){if(n){var e=0,u=n.length; -if(typeof t!="number"&&t!=K){var o=u;for(t=i(t,r);o--&&t(n[o],o,n);)e++}else if(e=t,e==K||r)return n[u-1];return l(n,Rt(0,u-e))}},e.take=M,e.head=M,e.chain=function(n){return n=new e(n),n.__chain__=J,n},e.VERSION="1.0.1",G(e),e.prototype.chain=function(){return this.__chain__=J,this},e.prototype.value=function(){return this.__wrapped__},r("pop push reverse shift sort splice unshift".split(" "),function(n){var t=gt[n];e.prototype[n]=function(){var n=this.__wrapped__;return t.apply(n,arguments),Dt&&0===n.length&&delete n[0],this -}}),r(["concat","join","slice"],function(n){var t=gt[n];e.prototype[n]=function(){var n=t.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new e(n),n.__chain__=J),n}}),Q?X?(X.exports=e)._=e:Q._=e:n._=e})(this); \ No newline at end of file +;(function(n){function r(n,r){var t;if(n&&pr[typeof n])for(t in r||(r=V),n)if(r(n[t],t,n)===Y)break}function t(n,r,t){if(n){r=r&&typeof t=="undefined"?r:i(r,t);var e=n.length;if(t=-1,typeof e=="number")for(;++tr||typeof n=="undefined")return 1;if(nt?0:t);++eo&&(o=f)}}else r=i(r,e),t(n,function(n,t,e){t=r(n,t,e),t>u&&(u=t,o=n)});return o}function q(n,r,e,u){var o=3>arguments.length;if(r=i(r,u,4),Mr(n)){var a=-1,f=n.length;for(o&&(e=n[++a]);++aarguments.length;if(typeof u!="number")var a=$r(n),u=a.length;return r=i(r,e,4),k(n,function(e,i,f){i=a?a[--u]:--u,t=o?(o=J,n[i]):r(t,n[i],i,f)}),t}function D(n,r,e){var u; +if(r=i(r,e),Mr(n)){e=-1;for(var o=n.length;++et?kr(0,u+t):t||0)-1;else if(t)return e=C(n,r),n[e]===r?e:-1;for(;++e>>1,t(n[e])z(f,c))&&(t&&f.push(c),a.push(e))}return a}function U(n,r){return qr||xr&&2"']/g,tr=/['\n\r\t\u2028\u2029\\]/g,er="[object Arguments]",ur="[object Array]",or="[object Boolean]",ir="[object Date]",ar="[object Number]",fr="[object Object]",cr="[object RegExp]",lr="[object String]",pr={"boolean":J,"function":G,object:G,number:J,string:J,undefined:J},sr={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"},vr=[],Q={},hr=n._,gr=RegExp("^"+(Q.valueOf+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),yr=Math.ceil,_r=n.clearTimeout,mr=vr.concat,dr=Math.floor,br=Q.hasOwnProperty,jr=vr.push,wr=n.setTimeout,Ar=Q.toString,xr=gr.test(xr=l.bind)&&xr,Er=gr.test(Er=Array.isArray)&&Er,Or=n.isFinite,Sr=n.isNaN,Nr=gr.test(Nr=Object.keys)&&Nr,kr=Math.max,Fr=Math.min,Rr=Math.random,Q=!!n.attachEvent,Q=xr&&!/\n|true/.test(xr+Q),qr=xr&&!Q,Br=(Br={0:1,length:1},vr.splice.call(Br,0,1),Br[0]),Dr=arguments.constructor==Object; +e.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},s(arguments)||(s=function(n){return n?br.call(n,"callee"):J});var Mr=Er||function(n){return Dr&&n instanceof Array||Ar.call(n)==ur},$r=Nr?function(n){return j(n)?Nr(n):[]}:v,Ir={"&":"&","<":"<",">":">",'"':""","'":"'"},zr=_(Ir);b(/x/)&&(b=function(n){return n instanceof Function||"[object Function]"==Ar.call(n)});var Tr=F;e.after=function(n,r){return 1>n?r():function(){return 1>--n?r.apply(this,arguments):void 0 +}},e.bind=U,e.bindAll=function(n){for(var r=mr.apply(vr,arguments),t=1z(e,o,t)&&u.push(o)}return u},e.filter=S,e.flatten=I,e.forEach=k,e.functions=y,e.groupBy=function(n,r,t){var e={}; +return r=i(r,t),k(n,function(n,t,u){t=r(n,t,u)+"",(br.call(e,t)?e[t]:e[t]=[]).push(n)}),e},e.initial=function(n,r,t){if(!n)return[];var e=0,u=n.length;if(typeof r!="number"&&r!=H){var o=u;for(r=i(r,t);o--&&r(n[o],o,n);)e++}else e=r==H||t?1:r||e;return l(n,0,Fr(kr(0,u-e),u))},e.intersection=function(n){var r=arguments,t=r.length,e=-1,u=n?n.length:0,o=[];n:for(;++ez(o,i)){for(var a=t;--a;)if(0>z(r[a],i))continue n;o.push(i)}}return o},e.invert=_,e.invoke=function(n,r){var t=l(arguments,2),e=-1,u=typeof r=="function",o=n?n.length:0,i=Array(typeof o=="number"?o:0); +return k(n,function(n){i[++e]=(u?r:n[r]).apply(n,t)}),i},e.keys=$r,e.map=F,e.max=R,e.memoize=function(n,r){var t={};return function(){var e=(r?r.apply(this,arguments):arguments[0])+"";return br.call(t,e)?t[e]:t[e]=n.apply(this,arguments)}},e.min=function(n,r,e){var u=1/0,o=u;if(!r&&Mr(n)){e=-1;for(var a=n.length;++ez(t,r,1)&&(e[r]=n)}),e},e.once=function(n){var r,t;return function(){return r?t:(r=G,t=n.apply(this,arguments),n=H,t)}},e.pairs=function(n){for(var r=-1,t=$r(n),e=t.length,u=Array(e);++rz(arguments,u,1)&&e.push(u)}return e},e.wrap=function(n,r){return function(){var t=[n];return jr.apply(t,arguments),r.apply(this,t)}},e.zip=function(n){for(var r=-1,t=n?R(Tr(arguments,"length")):0,e=Array(t);++rt?kr(0,e+t):Fr(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},e.mixin=W,e.noConflict=function(){return n._=hr,this},e.random=function(n,r){return n==H&&r==H&&(r=1),n=+n||0,r==H&&(r=n,n=0),n+dr(Rr()*((+r||0)-n+1))},e.reduce=q,e.reduceRight=B,e.result=function(n,r){var t=n?n[r]:H;return b(t)?n[r]():t},e.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:$r(n).length +},e.some=D,e.sortedIndex=C,e.template=function(n,r,t){n||(n=""),t=g({},t,e.templateSettings);var u=0,o="__p+='",i=t.variable;n.replace(RegExp((t.escape||nr).source+"|"+(t.interpolate||nr).source+"|"+(t.evaluate||nr).source+"|$","g"),function(r,t,e,i,f){return o+=n.slice(u,f).replace(tr,a),t&&(o+="'+_['escape']("+t+")+'"),i&&(o+="';"+i+";__p+='"),e&&(o+="'+((__t=("+e+"))==null?'':__t)+'"),u=f+r.length,r}),o+="';\n",i||(i="obj",o="with("+i+"||{}){"+o+"}"),o="function("+i+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+o+"return __p}"; +try{var f=Function("_","return "+o)(e)}catch(c){throw c.source=o,c}return r?f(r):(f.source=o,f)},e.unescape=function(n){return n==H?"":(n+"").replace(Z,p)},e.uniqueId=function(n){var r=++X+"";return n?n+r:r},e.all=O,e.any=D,e.detect=N,e.foldl=q,e.foldr=B,e.include=E,e.inject=q,e.first=$,e.last=function(n,r,t){if(n){var e=0,u=n.length;if(typeof r!="number"&&r!=H){var o=u;for(r=i(r,t);o--&&r(n[o],o,n);)e++}else if(e=r,e==H||t)return n[u-1];return l(n,kr(0,u-e))}},e.take=$,e.head=$,e.chain=function(n){return n=new e(n),n.__chain__=G,n +},e.VERSION="1.0.1",W(e),e.prototype.chain=function(){return this.__chain__=G,this},e.prototype.value=function(){return this.__wrapped__},t("pop push reverse shift sort splice unshift".split(" "),function(n){var r=vr[n];e.prototype[n]=function(){var n=this.__wrapped__;return r.apply(n,arguments),Br&&0===n.length&&delete n[0],this}}),t(["concat","join","slice"],function(n){var r=vr[n];e.prototype[n]=function(){var n=r.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new e(n),n.__chain__=G),n +}}),K?L?(L.exports=e)._=e:K._=e:n._=e})(this); \ No newline at end of file diff --git a/test/test-build.js b/test/test-build.js index 851e7bb8e..18b0a2f36 100644 --- a/test/test-build.js +++ b/test/test-build.js @@ -1239,12 +1239,17 @@ var sources = []; var check = _.after(2, _.once(function() { + ok(_.every(sources, function(source) { + // remove `Function` in `_.template` before testing for additional use + return !/\bFunction\(/.test(source.replace(/= *\w+\(\w+, *['"]return.+?apply[^)]+\)/, '')); + })); + equal(sources[0], sources[1]); QUnit.start(); })); var callback = function(data) { - // remove copyright header and append source + // remove copyright header and append to `sources` sources.push(data.source.replace(/^\/\**[\s\S]+?\*\/\n/, '')); check(); };