ArgParser - hoge1e3/Tonyu2 GitHub Wiki

api

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が返った」のかは区別できません。
  • 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};