class GetoptLong

要約

GNU getopt_long() を Ruby で模したクラスです。

目次

特異メソッド
インスタンスメソッド
定数

特異メソッド

new(*arguments)[permalink][rdoc]

GetoptLong のオブジェクトを生成します。引数が与えられたときは、それを GetoptLong#set_options メソッドに渡します。

[PARAM] arguments:
オプションを定義するための配列の配列を指定します。

[SEE_ALSO] GetoptLong#set_options

インスタンスメソッド

each {|optname, optarg|...}[permalink][rdoc]
each_option {|optname, optarg|...}

get メソッドのイテレータ版です。オプションとその引数の取得を繰り返し行います。

[SEE_ALSO] GetoptLong#get

error -> Class | nil[permalink][rdoc]
error? -> Class | nil

現在のエラーの型を返します。エラーが発生していなければ、nil を返します。

error_message -> String | nil[permalink][rdoc]

現在のエラーのエラーメッセージを返します。エラーが発生していなければ、nil を返します。

get -> [String, String][permalink][rdoc]
get_option -> [String, String]

ARGV から、次のオプションの名前と、もしあればその引数の組を取得します。メソッドは 2 つの値を返し、1 つ目の値がオプション名 (例: --max-size) で、2 つ目がオプションの引数 (例: 20K) です。

get と get_option は常にオプション名を正式名で返します。与えられたオプションが引数を取らないときは、空の文字列 ('') が optarg にセットされます。オプションが ARGV に残っていないときは、optname, optarg ともに nil にセットされます。メソッドから戻る際に、取得したオプションと引数は自動的に ARGV から取り除かれます。

与えられたコマンド行引数があなたのプログラムのオプションの設定に合わない場合は、エラーとなって、以下のいずれかの例外が発生します。

加えて、静粛 (quiet) フラグが有効になっていない限り、エラーメッセージを標準エラー出力に出力します。

例:

optname, optarg = option_parser.get
ordering -> Integer[permalink][rdoc]

現在の順序形式を返します。

ordering=(ordering)[permalink][rdoc]

順序形式を設定します。

環境変数 POSIXLY_CORRECT が定義されていると、引数に GetoptLong::PERMUTE を与えてこのメソッドを呼び出しても、実際のところの順序形式は GetoptLong::REQUIRE_ORDER に設定されます。

環境変数 POSIXLY_CORRECT が定義されていない限り、GetoptLong::PERMUTE が初期値です。定義されていれば、GetoptLong::REQUIRE_ORDER が初期値になります。

[PARAM] ordering:
GetoptLong::REQUIRE_ORDER, GetoptLong::PERMUTE, GetoptLong::RETURN_IN_ORDER のいずれかを指定します。
[EXCEPTION] ArgumentError:
GetoptLong::REQUIRE_ORDER, GetoptLong::PERMUTE, GetoptLong::RETURN_IN_ORDER 以外の値を指定した場合に発生します。
[EXCEPTION] RuntimeError:
GetoptLong#get, GetoptLong#get_option, GetoptLong#each, GetoptLong#each_option メソッドを呼び出した後にこのメソッドを呼び出した場合に発生します。
quiet -> true | false[permalink][rdoc]
quiet? -> true | false

静粛モードが有効であれば、真を返します。そうでなければ、偽を返します。

quiet=(flag)[permalink][rdoc]

flag が真なら、静粛 (quiet) モードが有効になります。

静粛モードが有効になっていると、レシーバのオブジェクトは、 GetoptLong#get, GetoptLong#get_option, GetoptLong#each, GetoptLong#each_option メソッドでエラーが発生しても、エラーメッセージを出力しません。初期値は、偽になっています。

[PARAM] flag:
真または偽を指定します。
set_error(type, message) -> ()[permalink][rdoc]

引数で与えられた例外を発生させます。

その際、静粛モードでなければ標準エラー出力に与えられたメッセージを出力します。

[PARAM] type:
例外クラスを指定します。
[PARAM] message:
例外にセットするメッセージを指定します。
set_options(*arguments) -> self[permalink][rdoc]

あなたのプログラムで、認識させたいオプションをセットします。個々のオプションは、オプション名と引数のフラグからなる配列でなければいけません。

配列中のオプション名は、一文字オプション (例: -d) か長いオプション (例: --debug) を表した文字列のいずれかでなければなりません。配列の中の一番左端のオプション名が、オプションの正式名になります。配列中の引数のフラグは、GetoptLong::NO_ARGUMENT, GetoptLong::REQUIRE_ARGUMENT, GetoptLong::OPTIONAL_ARGUMENT のいずれかでなくてはなりません。

オプションを設定できるのは、get, get_option, each, each_option メソッドを呼び出す前だけです。これらのメソッドを呼び出した後でオプションを設定しようとすると、RuntimeError 例外が発生します。

[PARAM] arguments:
オプションを表す配列を指定します。
[EXCEPTION] ArgumentError:
不正な引数が与えられるた場合、発生します。
parser.set_options(['-d', '--debug', GetoptLong::NO_ARGUMENT],
                   ['--version',     GetoptLong::NO_ARGUMENT],
                   ['--help',        GetoptLong::NO_ARGUMENT])

オプション名と引数のフラグの順番に決まりはないので、次のような形式でも構いません。

parser.set_options([GetoptLong::NO_ARGUMENT, '-d', '--debug'],
                   [GetoptLong::NO_ARGUMENT, '--version'],
                   [GetoptLong::NO_ARGUMENT, '--help'])
terminate -> self[permalink][rdoc]

オプションの処理を、強制的に終了させます。ただし、エラーが起きている状態でこのメソッドを起動しても、終了させることはできません。

すでにオプションの処理が終了しているときは、このメソッドは何も行いません。

[EXCEPTION] RuntimeError:
エラーが起きている状態でこのメソッドを起動すると、発生します
terminated? -> true | false[permalink][rdoc]

エラーが起きずにオプションの処理が終了しているときは真が返ります。それ以外のときは、偽が返ります。

定数

ARGUMENT_FLAGS -> Array[permalink][rdoc]

内部で使用する定数です。

GetoptLong::NO_ARGUMENT, GetoptLong::REQUIRE_ARGUMENT, GetoptLong::OPTIONAL_ARGUMENT がセットされています。

NO_ARGUMENT -> 0[permalink][rdoc]

オプションに引数が無いことを表す定数です。

OPTIONAL_ARGUMENT -> 2[permalink][rdoc]

オプションにはオプショナル引数があることを表す定数です。

ORDERINGS -> Array[permalink][rdoc]

内部で使用する定数です。

GetoptLong::REQUIRE_ORDER, GetoptLong::PERMUTE, GetoptLong::RETURN_IN_ORDER がセットされています。

PERMUTE -> 1[permalink][rdoc]

コマンド行引数の内容を、走査した順に入れ替え、最終的にはすべての非オプションを末尾に寄せます。この方式では、オプションはどの順序で書いても良いことになります。これは、たとえプログラム側でそうなることを期待しなくても、そうなります。この方式がデフォルトです。

REQUIRED_ARGUMENT -> 1[permalink][rdoc]

オプションに必須引数があることを表す定数です。

REQUIRE_ORDER -> 0[permalink][rdoc]

非オプション引数の後に来たオプションは、オプションとして認識しません。最初に非オプション引数が現れた時点で、オプションの解析処理を中止します。

RETURN_IN_ORDER -> 2[permalink][rdoc]

オプションと他の非オプション引数はどんな順序で並んでも良いが、お互いの順序は保持したままにしたいというプログラムのための形式です。

STATUS_STARTED -> 1[permalink][rdoc]

内部状態を管理するための定数です。ユーザが使用することはありません。

STATUS_TERMINATED -> 2[permalink][rdoc]

内部状態を管理するための定数です。ユーザが使用することはありません。

STATUS_YET -> 0[permalink][rdoc]

内部状態を管理するための定数です。ユーザが使用することはありません。