optify

Generates a combination matrix from a set of options key/value pairs.

optify 0.0.1

Generates a combination matrix from a set of options key/value pairs.

This can be pretty useful for testing all the possible combination of an option parameter.
There are probably other usages. Tell me :)

var matrix = optify({
    firstName: 'Nicolas',
    lastName: 'Gryman',
    birthDate: '1984-01-17'
});
 
// produces a the following matrix: 
matrix = [
    { firstName: 1,         lastName: 1,         birthDate: 1         },
    { firstName: , lastName: 1,         birthDate: 1         },
    { firstName: 1,         lastName: , birthDate: 1         },
    { firstName: , lastName: , birthDate: 1         },
    { firstName: 1,         lastName: 1,         birthDate:  },
    { firstName: , lastName: 1,         birthDate:  },
    { firstName: 1,         lastName: , birthDate:  },
    { firstName: , lastName: , birthDate:  }
];
var matrix = optify({
    firstName: 'Nicolas',
    lastName: 'Gryman',
    birthDate: '1984-01-17'
}, 'wombat');
 
// produces a the following matrix: 
matrix = [
    { firstName: 1,        lastName: 1,        birthDate: 1        },
    { firstName: 'wombat', lastName: 1,        birthDate: 1        },
    { firstName: 1,        lastName: 'wombat', birthDate: 1        },
    { firstName: 'wombat', lastName: 'wombat', birthDate: 1        },
    { firstName: 1,        lastName: 1,        birthDate: 'wombat' },
    { firstName: 'wombat', lastName: 1,        birthDate: 'wombat' },
    { firstName: 1,        lastName: 'wombat', birthDate: 'wombat' },
    { firstName: 'wombat', lastName: 'wombat', birthDate: 'wombat' }
];
optify({
    firstName: 'Nicolas',
    lastName: 'Gryman',
    birthDate: '1984-01-17'
}, function(opti) {
    console.log('[' + i + '' + opt);
});
 
// outputs: 
// [0] { 'firstName': 'Nicolas', 'lastName': 'Gryman', 'birthDate': '1984-01-17' } 
// [1] { 'firstName': undefined, 'lastName': 'Gryman', 'birthDate': '1984-01-17' } 
// [2] { 'firstName': 'Nicolas', 'lastName': undefined, 'birthDate': '1984-01-17' } 
// [3] { 'firstName': undefined, 'lastName': undefined, 'birthDate': '1984-01-17' } 
// [4] { 'firstName': 'Nicolas', 'lastName': 'Gryman', 'birthDate':  } 
// [5] { 'firstName': undefined, 'lastName': 'Gryman', 'birthDate':  } 
// [6] { 'firstName': 'Nicolas', 'lastName': undefined, 'birthDate':  } 
// [7] { 'firstName': undefined, 'lastName': undefined, 'birthDate':  } 
optify({
    firstName: 'Nicolas',
    lastName: 'Gryman',
    birthDate: '1984-01-17'
}, function(opti) {
    console.log('[' + i + '' + opt);
});
 
// outputs: 
// [0] { 'firstName': 'Nicolas', 'lastName': 'Gryman', 'birthDate': '1984-01-17' } 
// [1] { 'firstName': 'wombat', 'lastName': 'Gryman', 'birthDate': '1984-01-17' } 
// [2] { 'firstName': 'Nicolas', 'lastName': 'wombat', 'birthDate': '1984-01-17' } 
// [3] { 'firstName': 'wombat', 'lastName': 'wombat', 'birthDate': '1984-01-17' } 
// [4] { 'firstName': 'Nicolas', 'lastName': 'Gryman', 'birthDate': 'wombat' } 
// [5] { 'firstName': 'wombat', 'lastName': 'Gryman', 'birthDate': 'wombat' } 
// [6] { 'firstName': 'Nicolas', 'lastName': 'wombat', 'birthDate': 'wombat' } 
// [7] { 'firstName': 'wombat', 'lastName': 'wombat', 'birthDate': 'wombat' }