singleton method OptionParser.accept

accept(klass, pat = /.*/) {|str| ...} -> ()[permalink][rdoc][edit]

オプションの引数を文字列から Ruby のオブジェクトに変換するためのブロックを登録します。すべての OptionParser インスタンスに共通です。

ブロックには、文字列として与えられるオプションの引数から klass のインスタンスを生成して返すものを指定します。

OptionParser#on で klass を指定した場合、コマンドラインのオプションに与えられた引数は、この accept で登録したブロックで klass のインスタンスに変換されてから、OptionParser#on メソッドで登録したブロックに渡されます。


require "optparse"
require "time"

OptionParser.accept(Time) do |s,|
  begin
    Time.parse(s) if s
  rescue
    raise OptionParser::InvalidArgument, s
  end
end

opts = OptionParser.new

opts.on("-t", "--time [TIME]", Time) do |time|
  p time.class #=> Time
end

opts.parse!(ARGV)

いくつかのクラスに対しては変換用のブロックがデフォルトで登録されています。OptionParser#on を参照して下さい。

[PARAM] klass:
クラスオブジェクトを与えます。
[PARAM] pat:
match メソッドを持ったオブジェクト(Regexp オブジェクトなど)を与えます。