Ruby 2.4.0 リファレンスマニュアル > ライブラリ一覧 > optparseライブラリ > OptionParserクラス > accept
accept(klass, pat = /.*/) {|str| ...} -> ()
[permalink][rdoc]オプションの引数を文字列から 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 を参照して下さい。