30 lines
571 B
JavaScript
30 lines
571 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var isArrayish = require('is-arrayish');
|
||
|
|
||
|
var concat = Array.prototype.concat;
|
||
|
var slice = Array.prototype.slice;
|
||
|
|
||
|
var swizzle = module.exports = function swizzle(args) {
|
||
|
var results = [];
|
||
|
|
||
|
for (var i = 0, len = args.length; i < len; i++) {
|
||
|
var arg = args[i];
|
||
|
|
||
|
if (isArrayish(arg)) {
|
||
|
// http://jsperf.com/javascript-array-concat-vs-push/98
|
||
|
results = concat.call(results, slice.call(arg));
|
||
|
} else {
|
||
|
results.push(arg);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return results;
|
||
|
};
|
||
|
|
||
|
swizzle.wrap = function (fn) {
|
||
|
return function () {
|
||
|
return fn(swizzle(arguments));
|
||
|
};
|
||
|
};
|