UNPKG

nobloxmmc.js

Version:

A Node.js wrapper for ROBLOX. (original from sentanos)

79 lines (76 loc) 2.36 kB
/* var args = ['jar', 'username', 'password'] raw function login (jar, username, password) exported function login () check number of arguments if necessary options object: login(arguments[0]) individual arguments: for each argument add to an options array corresponding with argument order login(options) */ // Define exports.wrapExport = function (wrapFunction, required, optional) { var reqLength = required.length if ((reqLength + optional.length) > 0) { return function () { var options = {} var length = arguments.length var assume = false if (length > 0) { var first = arguments[0] var collectOptions = true if (length === 1 && (first instanceof Object)) { assume = true var firstArg = required[0] || optional if (firstArg && firstArg instanceof Object) { for (var i = 0; i < firstArg.length; i++) { if (first[firstArg[i]]) { options = first collectOptions = false break } } } else if (firstArg && first[firstArg]) { options = first collectOptions = false } } if (collectOptions) { for (i = 0; i <= length; i++) { var list = (i >= reqLength ? optional : required) var index = list[(i >= reqLength ? (i - reqLength) : i)] if (index instanceof Object) { options[index[0]] = arguments[i] } else { options[index] = arguments[i] } } } } for (i = 0; i < reqLength; i++) { var arg = required[i] var found = false if (arg instanceof Object) { for (var k = 0; k <= arg.length; k++) { if (options[arg[k]] != null) { found = true break } } } else if (options[arg] != null) { found = true } if (!found) { if (assume) { throw new Error('A required argument is missing') } else { throw new Error('Required argument "' + (arg instanceof Object ? arg.join('/') : arg) + '" is missing') } } } return wrapFunction(options) } } else { return wrapFunction } }