私は現在 Python でスクリプトを作成していますが、いくつかの理由で Ruby を試してみたいと思っています。先週、多くのサンプル コードを調べ、多くのドキュメントを読みました。私が懸念している点の 1 つは、Ruby のライブラリを解析する適切なコマンド ライン引数がないことです。Ruby の専門家の皆さん、怒らないでください。それが私がここにいる理由です。
Python では、私はこれを使用することに慣れてargparse
いましたが、これは私の意見では完璧です (おそらく私のニーズに合っています)。残念ながら、OptionParser
柔軟性と機能を考慮していargparse
ません。
今のところ、次の制約を具体的に検討しています。
相互に排他的なオプション リストを作成するにはどうすればよいですか? たとえば、 というプログラムの非常に小さなオプション リストの場合
test
です。usage: test [-h] [-a | -b | -c] [-d] [filename]
次のようなコードを書くことができます。
# implement a ---------------------------------------------- opts.on( "-a", "--alpha", "implement alpha") do #... end
等々。しかし、それらの順列をコーディングしてエラー処理を行わない限り、を作成する方法がなく、
a
相互に排他的です。例えばb
c
test -ab #should through an error
Python では、非常に簡単な方法でこれを行うことができます。
# create an command line argument parser object cmd_line_parser = argparse.ArgumentParser() # create a mutually exclusive group cmd_line_group = cmd_line_parser.add_mutually_exclusive_group()
第二に、この順列のコードを具体的に書かない限り、ペアリング
-d
する方法がありません。-a
これは非常識です。[OPTION]
リストは自分で書かなければなりません。考えられるすべての入力順列についてブラックボックス テストを実行し、それらをブラックボックス リストにマッピングしない限り、自分が間違っているか正しいかを知る方法はありません。さらに、強制的な引数は、特別なコードを使用して処理する必要があります。
optparse
Rubyの他のライブラリを使用してこれらの制約を簡単に処理できますか?