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);