Simplify _.omit and _.pick for the lodash underscore build.

Former-commit-id: 9a42c964ce4003bde1b4ce55f0f851141dbc9bb6
This commit is contained in:
John-David Dalton
2012-10-13 23:32:17 -07:00
parent dea8ad4c49
commit 4b95f07923
3 changed files with 46 additions and 2 deletions

View File

@@ -70,7 +70,7 @@
'clone': ['extend', 'forEach', 'forOwn', 'isArguments', 'isPlainObject'],
'compact': [],
'compose': [],
'contains': ['some'],
'contains': ['indexOf', 'some'],
'countBy': ['forEach'],
'debounce': [],
'defaults': ['isArguments'],
@@ -975,6 +975,7 @@
if (isUnderscore) {
dependencyMap.isEqual = ['isArray', 'isFunction'];
dependencyMap.isEmpty = ['isArray', 'isString'];
dependencyMap.pick = [];
if (useUnderscoreClone) {
dependencyMap.clone = ['extend', 'isArray'];
@@ -1132,6 +1133,39 @@
' }'
].join('\n'));
// replace `_.omit`
source = source.replace(/^( +)function omit[\s\S]+?\n\1}/m, [
' function omit(object) {',
' var props = concat.apply(ArrayProto, arguments),',
' result = {};',
'',
' forIn(object, function(value, key) {',
' if (indexOf(props, key, 1) < 0) {',
' result[key] = value;',
' }',
' });',
' return result;',
' }'
].join('\n'));
// replace `_.pick`
source = source.replace(/^( +)function pick[\s\S]+?\n\1}/m, [
' function pick(object) {',
' var index = 0,',
' props = concat.apply(ArrayProto, arguments),',
' length = props.length,',
' result = {};',
'',
' while (++index < length) {',
' var prop = props[index];',
' if (prop in object) {',
' result[prop] = object[prop];',
' }',
' }',
' return result;',
' }'
].join('\n'));
// replace `_.without`
source = source.replace(/^( +)function without[\s\S]+?\n\1}/m, [
' function without(array) {',
@@ -1149,6 +1183,9 @@
' }'
].join('\n'));
// remove string support from `_.contains`
source = source.replace(/return *\(toString\.call.+?stringClass[\s\S]+?;/, 'return indexOf(collection, target) > -1;');
// replace `arrayLikeClasses` in `_.isEqual`
source = source.replace(/(?: *\/\/.*\n)*( +)var isArr *= *arrayLikeClasses[^}]+}/, '$1var isArr = isArray(a);');

View File

@@ -639,6 +639,13 @@
object = { 'fn': lodash.bind(function(x) { return this.x + x; }, { 'x': 1 }, 1) };
equal(object.fn(), 2, '_.bind: ' + basename);
object = { 'a': 1, 'b': 2, 'c': 3 };
var actual = lodash.omit(object, function(value) { return value == 3; });
deepEqual(_.keys(actual).sort(), ['a', 'b', 'c'], '_.omit: ' + basename);
actual = lodash.pick(object, function(value) { return value != 3; });
deepEqual(_.keys(actual), [], '_.pick: ' + basename);
ok(lodash.clone(array, true)[0] === array[0], '_.clone: ' + basename);
start();
});

View File

@@ -1499,7 +1499,7 @@
equal(compiled(data), '1');
});
test('should work when passing `options.variable`', function() {
var compiled = _.template(
'<% _.forEach( data.a, function( value ) { %>' +