ArgParser - hoge1e3/Tonyu2 GitHub Wiki
ArgParser
引数の解析を行います。特にオプション引数が多い場合に使用します。
コンストラクタ
new ArgParser(arguments)
メソッド
- toArray() 残っている引数を配列に変換します。
- 引数スプレッド構文(...args)を使ったほうが楽です。
- shift()
- 先頭の引数を「取り出し」、その値を返します。
- 「取り出された」引数は削除されます。
- shift(n)
- nが数値の場合、n個の引数を先頭から「取り出して」配列として返します。
- shift(t)
- tが文字列の場合、先頭の引数が
typeof演算子でtに一致した場合のみ「取り出し」ます。 - 「取り出された」場合その要素を返し、そうでない場合は
undefinedが返ります。 - ただし、先頭の引数が
nullの場合、tの値に関係なく「取り出し」は行われません。(JavaScriptではtypeof nullは"object"になるという、奇妙な仕様があります) tに"undefined"は指定しないでください。undefinedという結果が「undefinedという先頭の引数が『取り出された』」のか、「先頭の引数がundefinedに一致しなかったためにundefinedが返った」のかは区別できません。
- tが文字列の場合、先頭の引数が
- shift(T)
Tがクラスやモジュールの場合、先頭の引数に対してis Tであるときだけ「取り出し」ます。
- peek(i)
- i番目(最初は0番目)の引数の内容を参照します。省略値は0です。
- shiftOptions(...keys)
- keysにこの関数で使用する引数の名前を列挙します。
- オブジェクトを生成し、次のようにキーと値を関連づけます
- 引数リストから、順番に値を「取り出し」、keysで指定されるキー名の順に値を設定します。
- ただし、「取り出された」値が最後の引数で、かつオブジェクトリテラル(正確には、継承されていない
Objectクラスから生成されたオブジェクト)の場合、そのオブジェクトのキーと値の組をすべて設定します。
shiftOptions例
\func() {
let a=new ArgParser(arguments);
let options=a.shiftOptions("x","y","z");
let x=options.x||0;
let y=options.y||x;
let z=options.z||y;
print ("x=", x);
print ("y=", y);
print ("z=", z);
}
//これらはすべて同じ動作になります。
func(1,2,3);
func(1,2) {z:3};
func(1) {y:2, z:3};
func{x:1, y:2, z:3};