mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-10 02:47:50 +00:00
Allow deep clone if requested via include or plus with the underscore build.
Former-commit-id: e86dba41f7265700330e57346a112b578873b390
This commit is contained in:
26
build.js
26
build.js
@@ -950,6 +950,9 @@
|
|||||||
// flag used to specify if the build should include the "use strict" directive
|
// flag used to specify if the build should include the "use strict" directive
|
||||||
var useStrict = isStrict || !(isLegacy || isMobile);
|
var useStrict = isStrict || !(isLegacy || isMobile);
|
||||||
|
|
||||||
|
// flag used to specify replacing Lo-Dash's `_.clone` with Underscore's
|
||||||
|
var useUnderscoreClone = isUnderscore;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
|
|
||||||
// names of methods to include in the build
|
// names of methods to include in the build
|
||||||
@@ -974,6 +977,11 @@
|
|||||||
(result = getDependencies(optionToMethodsArray(source, value)));
|
(result = getDependencies(optionToMethodsArray(source, value)));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// use Lo-Dash's clone if explicitly requested
|
||||||
|
if (result && result.indexOf('clone') > -1) {
|
||||||
|
useUnderscoreClone = false;
|
||||||
|
}
|
||||||
|
|
||||||
// add method names required by Backbone and Underscore builds
|
// add method names required by Backbone and Underscore builds
|
||||||
if (isBackbone && !result) {
|
if (isBackbone && !result) {
|
||||||
result = getDependencies(backboneDependencies);
|
result = getDependencies(backboneDependencies);
|
||||||
@@ -1038,7 +1046,6 @@
|
|||||||
}
|
}
|
||||||
else if (isUnderscore) {
|
else if (isUnderscore) {
|
||||||
// update dependencies
|
// update dependencies
|
||||||
dependencyMap.clone = ['extend', 'isArray'];
|
|
||||||
dependencyMap.isEqual = ['isArray', 'isFunction'];
|
dependencyMap.isEqual = ['isArray', 'isFunction'];
|
||||||
dependencyMap.isEmpty = ['isArray'];
|
dependencyMap.isEmpty = ['isArray'];
|
||||||
|
|
||||||
@@ -1051,13 +1058,16 @@
|
|||||||
source = removeVar(source, 'largeArraySize');
|
source = removeVar(source, 'largeArraySize');
|
||||||
|
|
||||||
// replace `_.clone`
|
// replace `_.clone`
|
||||||
source = source.replace(/( +)function clone[\s\S]+?\n\1}/, [
|
if (useUnderscoreClone) {
|
||||||
' function clone(value) {',
|
dependencyMap.clone = ['extend', 'isArray'];
|
||||||
' return value && objectTypes[typeof value]',
|
source = source.replace(/( +)function clone[\s\S]+?\n\1}/, [
|
||||||
' ? (isArray(value) ? slice.call(value) : extend({}, value))',
|
' function clone(value) {',
|
||||||
' : value',
|
' return value && objectTypes[typeof value]',
|
||||||
' }'
|
' ? (isArray(value) ? slice.call(value) : extend({}, value))',
|
||||||
].join('\n'));
|
' : value',
|
||||||
|
' }'
|
||||||
|
].join('\n'));
|
||||||
|
}
|
||||||
|
|
||||||
// replace `_.difference`
|
// replace `_.difference`
|
||||||
source = source.replace(/( +)function difference[\s\S]+?\n\1}/, [
|
source = source.replace(/( +)function difference[\s\S]+?\n\1}/, [
|
||||||
|
|||||||
@@ -633,6 +633,24 @@
|
|||||||
start();
|
start();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
asyncTest('`lodash underscore plus=clone`', function() {
|
||||||
|
var start = _.after(2, _.once(QUnit.start));
|
||||||
|
|
||||||
|
build(['-s', 'underscore', 'plus=clone'], function(source, filePath) {
|
||||||
|
var array = [{ 'value': 1 }],
|
||||||
|
basename = path.basename(filePath, '.js'),
|
||||||
|
context = createContext();
|
||||||
|
|
||||||
|
vm.runInContext(source, context);
|
||||||
|
var lodash = context._,
|
||||||
|
clone = lodash.clone(array, true);
|
||||||
|
|
||||||
|
deepEqual(array, clone, basename);
|
||||||
|
notEqual(array, clone, basename);
|
||||||
|
start();
|
||||||
|
});
|
||||||
|
});
|
||||||
}());
|
}());
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|||||||
Reference in New Issue
Block a user