模块 ringo / args

命令行选项的解析器。该解析器支持各种选项格式:

  • -a -b -c (多个短期选项)
  • -abc (将多个空头期权合并为一个)
  • -a value (带有值的简短选项)
  • -avalue (具有值的备选短期选项)
  • --option value (带有值的长选项)
  • --option=value (替代长选项与值)

Example

// ringo parserExample.js -v --size 123 -p 45678

include('ringo/term');
var system = require('system');
var {Parser} = require('ringo/args');

var parser = new Parser();
parser.addOption('s', 'size', 'SIZE', 'Sets the size to SIZE');
parser.addOption('p', 'pid', 'PID', 'Kill the process with the PID');
parser.addOption('v', 'verbose', null, 'Verbosely do something');
parser.addOption('h', 'help', null, 'Show help');

var options = parser.parse(system.args.slice(1));
if (options.help) {
  writeln(parser.help());
} else {
  if (options.size) {
     writeln('Set size to ' + parseInt(options.size));
  }

  if (options.pid) {
     writeln('Kill process ' + options.pid);
  }

  if (options.verbose) {
     writeln('Verbose!');
  }
}

if (!Object.keys(options).length) {
  writeln("Run with -h/--help to see available options");
}

Class Parser

Instance Methods


Parser ()

创建一个新的命令行选项解析器。


Parser.prototype. addOption (shortName, longName, argument, helpText)

给解析器添加一个选项。

Parameters

String shortName

the short option name (without leading hyphen)

String longName

the long option name (without leading hyphens)

String argument

display name of the option's value, or null if the argument is a singular switch

String helpText

the help text to display for the option

Returns

Object

this parser for chained invocation


Parser.prototype. help ()

获取适用于在命令行脚本中显示的解析器选项的帮助文本。

Returns

String

a string explaining the parser's options


Parser.prototype. parse (args, result)

将参数数组解析为选项对象。如果定义了长选项名称,则将其转换为骆驼大小写形式并用作属性名称。否则,简短选项名称将用作属性名称。

将结果对象作为第二个参数传递是定义默认选项的一种便捷方式:

Example

parser.parse(system.args.slice(1), {myOption: "defaultValue"});

Parameters

Array args

the argument array. Matching options are removed.

Object result

optional result object. If undefined, a new Object is created.

Returns

Object

the result object