UNPKG

rbxjs-plus

Version:

A system allowing access to roblox functions.

79 lines (76 loc) 2.39 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; } };