You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
53 lines
1.1 KiB
"use strict";
|
|
|
|
const Options = require("./options");
|
|
|
|
module.exports = normalizeArgs;
|
|
|
|
/**
|
|
* Normalizes the given arguments, accounting for optional args.
|
|
*
|
|
* @param {Arguments} args
|
|
* @returns {object}
|
|
*/
|
|
function normalizeArgs (args) {
|
|
let path, schema, options, callback;
|
|
args = Array.prototype.slice.call(args);
|
|
|
|
if (typeof args[args.length - 1] === "function") {
|
|
// The last parameter is a callback function
|
|
callback = args.pop();
|
|
}
|
|
|
|
if (typeof args[0] === "string") {
|
|
// The first parameter is the path
|
|
path = args[0];
|
|
if (typeof args[2] === "object") {
|
|
// The second parameter is the schema, and the third parameter is the options
|
|
schema = args[1];
|
|
options = args[2];
|
|
}
|
|
else {
|
|
// The second parameter is the options
|
|
schema = undefined;
|
|
options = args[1];
|
|
}
|
|
}
|
|
else {
|
|
// The first parameter is the schema
|
|
path = "";
|
|
schema = args[0];
|
|
options = args[1];
|
|
}
|
|
|
|
if (!(options instanceof Options)) {
|
|
options = new Options(options);
|
|
}
|
|
|
|
return {
|
|
path,
|
|
schema,
|
|
options,
|
|
callback
|
|
};
|
|
}
|
|
|