mirror of
https://github.com/Wessel/larg.git
synced 2026-06-06 07:25:44 +02:00
29 lines
1.0 KiB
JavaScript
29 lines
1.0 KiB
JavaScript
/**
|
|
* Parse arguments of an array
|
|
* @param {Array} args - The arguments to parse
|
|
* @returns {Object} - The parsed arguments
|
|
*/
|
|
module.exports = (args) => {
|
|
let p = {};
|
|
let l = [];
|
|
|
|
const rHyphens = (v) => v.replace(/^\-+/g, '');
|
|
const cApplicable = (v) => ( isNaN(v) ? (v.toString().toLowerCase() === 'true' ? true : (v.toString().toLowerCase() === 'false' ? false : v)) : Number(v));
|
|
|
|
for (let _ = 0; _ < args.length; _++) {
|
|
const e = args[_].indexOf('=');
|
|
const r = args[_].charAt(0) === '-' && args.length - 1 >= _ + 1 && args[_ + 1].indexOf('=') === -1 && args[_ + 1].charAt(0) !== '-';
|
|
const n = e === -1 ? rHyphens(args[_]) : rHyphens(args[_].slice(0, e));
|
|
|
|
if (e !== -1) p[n] = cApplicable(args[_].slice(e + 1));
|
|
else if (r) {
|
|
p[n] = cApplicable(args[_ + 1]);
|
|
_++;
|
|
} else if (args[_].charAt(0) === '-') {
|
|
if (args[_].charAt(1) === '-' ) p[n] = true;
|
|
else for (let b = 0; b < n.length; b++) p[n.charAt(b)] = true;
|
|
} else l.push(cApplicable(n));
|
|
}
|
|
|
|
return Object.assign(p, { '_': l });
|
|
}; |