Update method dependencies and add more mobile and underscore build tests.

Former-commit-id: fa10d8c7bef9700ec59e4e38e730e0ad4963d812
This commit is contained in:
John-David Dalton
2013-01-27 02:44:45 -08:00
parent cf13eca58c
commit 1c63e2d295
2 changed files with 129 additions and 92 deletions

View File

@@ -1243,7 +1243,7 @@
/*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/
// backup `dependencyMap` to restore later // backup `dependencyMap` to restore later
var dependencyBackup = _.clone(dependencyMap, true); var dependencyBackup = _.cloneDeep(dependencyMap);
// used to specify a custom IIFE to wrap Lo-Dash // used to specify a custom IIFE to wrap Lo-Dash
var iife = options.reduce(function(result, value) { var iife = options.reduce(function(result, value) {
@@ -1386,28 +1386,42 @@
}); });
// include Lo-Dash's methods if explicitly requested // include Lo-Dash's methods if explicitly requested
if (isUnderscore && result) { if (isUnderscore) {
if (result) {
exposeAssign = result.indexOf('assign') > -1; exposeAssign = result.indexOf('assign') > -1;
exposeForIn = result.indexOf('forIn') > -1; exposeForIn = result.indexOf('forIn') > -1;
exposeForOwn = result.indexOf('forOwn') > -1; exposeForOwn = result.indexOf('forOwn') > -1;
exposeIsPlainObject = result.indexOf('isPlainObject') > -1; exposeIsPlainObject = result.indexOf('isPlainObject') > -1;
useUnderscoreClone = result.indexOf('clone') < 0; }
useUnderscoreClone = plusMethods.indexOf('clone') < 0;
} }
// update dependencies // update dependencies
if (isMobile) { if (isMobile) {
dependencyMap.reduceRight = ['forEach', 'keys']; dependencyMap.reduceRight = _.without(dependencyMap.reduceRight, 'isEqual', 'isString');
} }
if (isUnderscore) { if (isUnderscore) {
dependencyMap.contains = ['indexOf']; dependencyMap.contains = _.without(dependencyMap.contains, 'isString');
dependencyMap.isEqual = ['isArray', 'isFunction']; dependencyMap.countBy = _.without(dependencyMap.countBy, 'isEqual', 'keys');
dependencyMap.every = _.without(dependencyMap.every, 'isEqual', 'keys');
dependencyMap.filter = _.without(dependencyMap.filter, 'isEqual', 'keys');
dependencyMap.find = _.without(dependencyMap.find, 'isEqual', 'keys');
dependencyMap.groupBy = _.without(dependencyMap.groupBy, 'isEqual', 'keys');
dependencyMap.isEqual = _.without(dependencyMap.isEqual, 'forIn', 'isArguments');
dependencyMap.isEmpty = ['isArray', 'isString']; dependencyMap.isEmpty = ['isArray', 'isString'];
dependencyMap.max = ['isArray']; dependencyMap.map = _.without(dependencyMap.map, 'isEqual', 'keys');
dependencyMap.min = ['isArray']; dependencyMap.max = _.without(dependencyMap.max, 'isEqual', 'isString', 'keys');
dependencyMap.pick = []; dependencyMap.min = _.without(dependencyMap.min, 'isEqual', 'isString', 'keys');
dependencyMap.template = ['defaults', 'escape']; dependencyMap.pick = _.without(dependencyMap.pick, 'forIn', 'isObject');
dependencyMap.reduce = _.without(dependencyMap.reduce, 'isEqual', 'keys');
dependencyMap.reject = _.without(dependencyMap.reject, 'isEqual', 'keys');
dependencyMap.some = _.without(dependencyMap.some, 'isEqual', 'keys');
dependencyMap.sortBy = _.without(dependencyMap.sortBy, 'isEqual', 'keys');
dependencyMap.sortedIndex = _.without(dependencyMap.sortedIndex, 'isEqual', 'keys');
dependencyMap.template = _.without(dependencyMap.template, 'keys', 'values');
dependencyMap.uniq = _.without(dependencyMap.uniq, 'isEqual', 'keys');
if (useUnderscoreClone) { if (useUnderscoreClone) {
dependencyMap.clone = ['assign', 'isArray']; dependencyMap.clone = _.without(dependencyMap.clone, 'forEach', 'forOwn');
} }
} }
// add method names required by Backbone and Underscore builds // add method names required by Backbone and Underscore builds
@@ -1462,9 +1476,10 @@
} }
if (isUnderscore) { if (isUnderscore) {
// remove unneeded variables // remove unneeded variables
if (useUnderscoreClone) {
source = removeVar(source, 'cloneableClasses'); source = removeVar(source, 'cloneableClasses');
source = removeVar(source, 'ctorByClass'); source = removeVar(source, 'ctorByClass');
}
// remove `_.templateSettings.imports assignment // remove `_.templateSettings.imports assignment
source = source.replace(/,[^']*'imports':[^}]+}/, ''); source = source.replace(/,[^']*'imports':[^}]+}/, '');
@@ -1494,7 +1509,7 @@
if (useUnderscoreClone) { if (useUnderscoreClone) {
source = replaceFunction(source, 'clone', [ source = replaceFunction(source, 'clone', [
' function clone(value) {', ' function clone(value) {',
' return value && objectTypes[typeof value]', ' return isObject(value)',
' ? (isArray(value) ? slice(value) : assign({}, value))', ' ? (isArray(value) ? slice(value) : assign({}, value))',
' : value', ' : value',
' }' ' }'
@@ -1755,6 +1770,11 @@
.replace(/!argsAreObjects[^:]+:\s*/g, ''); .replace(/!argsAreObjects[^:]+:\s*/g, '');
}); });
// remove `_.isEqual` use from `createCallback`
source = source.replace(matchFunction(source, 'createCallback'), function(match) {
return match.replace(/isEqual\(([^,]+), *([^,]+)[^)]+\)/, '$1 === $2');
});
// remove conditional `charCodeCallback` use from `_.max` and `_.min` // remove conditional `charCodeCallback` use from `_.max` and `_.min`
_.each(['max', 'min'], function(methodName) { _.each(['max', 'min'], function(methodName) {
source = source.replace(matchFunction(source, methodName), function(match) { source = source.replace(matchFunction(source, methodName), function(match) {
@@ -2127,13 +2147,11 @@
source = source.replace(/(?:\n +\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\/)?\n *var hasDontEnumBug;|.+?hasDontEnumBug *=.+/g, ''); source = source.replace(/(?:\n +\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\/)?\n *var hasDontEnumBug;|.+?hasDontEnumBug *=.+/g, '');
source = source.replace(/(?:\n +\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\/)?\n *var nonEnumArgs;|.+?nonEnumArgs *=.+/g, ''); source = source.replace(/(?:\n +\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\/)?\n *var nonEnumArgs;|.+?nonEnumArgs *=.+/g, '');
} }
if (isRemoved(source, 'createIterator', 'bind', 'keys', 'template')) { if (isRemoved(source, 'createIterator', 'bind', 'keys')) {
source = removeVar(source, 'isBindFast'); source = removeVar(source, 'isBindFast');
source = removeVar(source, 'isV8');
source = removeVar(source, 'nativeBind'); source = removeVar(source, 'nativeBind');
} }
if (isRemoved(source, 'createIterator', 'bind', 'isArray', 'isPlainObject', 'keys', 'template')) {
source = removeVar(source, 'reNative');
}
if (isRemoved(source, 'createIterator', 'keys')) { if (isRemoved(source, 'createIterator', 'keys')) {
source = removeVar(source, 'nativeKeys'); source = removeVar(source, 'nativeKeys');
source = removeKeysOptimization(source); source = removeKeysOptimization(source);

View File

@@ -774,6 +774,9 @@
equal('imports' in lodash.templateSettings, false, '_.templateSettings should not have an "imports" property: ' + basename); equal('imports' in lodash.templateSettings, false, '_.templateSettings should not have an "imports" property: ' + basename);
equal(lodash.uniqueId(0), '1', '_.uniqueId should ignore a prefix of `0`: ' + basename); equal(lodash.uniqueId(0), '1', '_.uniqueId should ignore a prefix of `0`: ' + basename);
var collection = [{ 'a': { 'b': 1, 'c': 2 } }];
deepEqual(lodash.where(collection, { 'a': { 'b': 1 } }), []);
start(); start();
}); });
}); });
@@ -833,8 +836,8 @@
var lodash = context._, var lodash = context._,
clone = lodash.clone(array, true); clone = lodash.clone(array, true);
deepEqual(array, clone, basename); ok(_.isEqual(array, clone), basename);
notEqual(array, clone, basename); notEqual(array[0], clone[0], basename);
start(); start();
}); });
}); });
@@ -1025,7 +1028,7 @@
deepEqual(lodash.sortBy([3, 2, 1], _.identity), array, basename); deepEqual(lodash.sortBy([3, 2, 1], _.identity), array, basename);
ok(lodash.isEqual(circular1, circular2), basename); ok(lodash.isEqual(circular1, circular2), basename);
var actual = lodash.clone(circular1, true); var actual = lodash.cloneDeep(circular1);
ok(actual != circular1 && actual.b == actual, basename); ok(actual != circular1 && actual.b == actual, basename);
start(); start();
}); });
@@ -1065,7 +1068,22 @@
}) })
); );
commands.forEach(function(command) { commands.forEach(function(origCommand) {
_.times(3, function(index) {
var command = origCommand;
if (index == 1) {
if (/mobile/.test(command)) {
return;
}
command = 'mobile ' + command;
}
if (index == 2) {
if (/category|underscore/.test(command)) {
return;
}
command = 'underscore ' + command;
}
asyncTest('`lodash ' + command +'`', function() { asyncTest('`lodash ' + command +'`', function() {
var start = _.after(2, _.once(QUnit.start)); var start = _.after(2, _.once(QUnit.start));
@@ -1140,6 +1158,7 @@
}); });
}); });
}); });
});
}()); }());
}()); }());