JavascriptでオプションのパースをするOptparse-js

find /tmp -name core -type f -print のように、渡されたオプションを解析するのはよく行うことのため、
各言語でそれをやってくれるライブラリが作られています。

javascriptでそれにあたるのがOptparse-jsですが、
使い方がちょっと独特です。

インストール

https://github.com/jfd/optparse-jsからどうぞ。
npmにも登録されているので、node.jsからも簡単に使えます。

使い方

オプション指定

どのようなオプションを宇受け取るかは配列で定義します。
なお、短縮形も同時に定義できます。

var options = [
  ["-n", "--name FILENAME", "filename"],
  ["-t", "--type TYPE", "type"]
  ];

この場合、filenameを受け取る-nもしくは–nameと、
typeを受け取る-tもしくは–typeを定義しています。

この配列をOptionParserに渡してパーサー用オブジェクトを受け取ります。

var parser = new optparse.OptionParser(options);

オプション処理

オプションを受け取ったときの処理は、パーサーオブジェクトに関数を渡して登録します。
第一引数にオプション名、第二引数にそのオプションがあったときの処理を渡します。

parser.on("name", function(opt, value) {
  parameter["name"] = filename;
});

パース実行

パーサーオブジェクトのparseメソッドでパースを実行できます。 ただし、スペースを自分で区切ってはくれないため、
先に配列に分けておく必要があります。

parser.parse(command_str.split(" "));

(勝手にオプション足したり、区切り文字を自由に設定できる、こうしていると思われます)

サンプルコード

var optparse = require('optparse');


var command_str = "-name core -type f";

var options = [
  ["-n", "--name FILENAME", "filename"],
  ["-t", "--type TYPE", "type"]
  ];

var parser = new optparse.OptionParser(options);

parameter = {};

parser.on("name", function(opt, value) {
  parameter["name"] = filename;
});

parser.on("type", function(opt, value) {
  parameter["type"] = value;
});

parser.parse(command_str.split(" "));

console.log(parameter);