X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=node_modules%2Funcss%2Fnode_modules%2Flodash%2Finternal%2FcreateCurryWrapper.js;fp=node_modules%2Funcss%2Fnode_modules%2Flodash%2Finternal%2FcreateCurryWrapper.js;h=d5e1f46d449f5bfa025664914e8d933ccd117254;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/node_modules/uncss/node_modules/lodash/internal/createCurryWrapper.js b/node_modules/uncss/node_modules/lodash/internal/createCurryWrapper.js new file mode 100644 index 000000000..d5e1f46d4 --- /dev/null +++ b/node_modules/uncss/node_modules/lodash/internal/createCurryWrapper.js @@ -0,0 +1,41 @@ +var apply = require('./apply'), + createCtorWrapper = require('./createCtorWrapper'), + createHybridWrapper = require('./createHybridWrapper'), + createRecurryWrapper = require('./createRecurryWrapper'), + replaceHolders = require('./replaceHolders'); + +/** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask of wrapper flags. See `createWrapper` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createCurryWrapper(func, bitmask, arity) { + var Ctor = createCtorWrapper(func); + + function wrapper() { + var length = arguments.length, + index = length, + args = Array(length), + fn = (this && this !== global && this instanceof wrapper) ? Ctor : func, + placeholder = wrapper.placeholder; + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + return length < arity + ? createRecurryWrapper(func, bitmask, createHybridWrapper, placeholder, undefined, args, holders, undefined, undefined, arity - length) + : apply(fn, this, args); + } + return wrapper; +} + +module.exports = createCurryWrapper;