45 lines
931 B
JavaScript
45 lines
931 B
JavaScript
/**
|
|
* Initialize a new `Option` with the given `flags` and `description`.
|
|
*
|
|
* @param {String} flags
|
|
* @param {String} description
|
|
* @api public
|
|
*/
|
|
module.exports = Option;
|
|
|
|
function Option(flags, description) {
|
|
this.flags = flags;
|
|
this.required = ~flags.indexOf('<');
|
|
this.optional = ~flags.indexOf('[');
|
|
this.bool = !~flags.indexOf('-no-');
|
|
flags = flags.split(/[ ,|]+/);
|
|
if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift();
|
|
this.long = flags.shift();
|
|
this.description = description || '';
|
|
}
|
|
|
|
/**
|
|
* Return option name.
|
|
*
|
|
* @return {String}
|
|
* @api private
|
|
*/
|
|
|
|
Option.prototype.name = function(){
|
|
return this.long
|
|
.replace('--', '')
|
|
.replace('no-', '');
|
|
};
|
|
|
|
/**
|
|
* Check if `arg` matches the short or long flag.
|
|
*
|
|
* @param {String} arg
|
|
* @return {Boolean}
|
|
* @api private
|
|
*/
|
|
|
|
Option.prototype.is = function(arg){
|
|
return arg == this.short
|
|
|| arg == this.long;
|
|
}; |