Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > optparseライブラリ > OptionParserクラス

class OptionParser

クラス・モジュールの継承リスト: OptionParser < Object < Kernel < BasicObject

要約

コマンドラインのオプションを取り扱うためのクラスです。

オプションが指定された時に呼ばれるブロックを OptionParser#on メソッドで登録していきます。つまり、OptionParser を使う場合、基本的には

  1. OptionParser オブジェクト opt を生成する。
  2. オプションを取り扱うブロックを opt に登録する。
  3. opt.parse(ARGV) でコマンドラインを実際に parse する。

というような流れになります。


require "optparse"
ProgramConfig = Hash.new
opts = OptionParser.new
opts.on("-a"){|v| ProgramConfig[:a] = true } # オプション「-a」がコマンドラインで指定されていた場合の動作。
opts.parse!(ARGV)                            # 実際にコマンドラインの parse を行う。

デフォルトで利用可能なオプション

以下はデフォルトで利用可能なオプションです。オプションサマリには出てきません。

--help

オプションサマリを表示してから exit します。

--version

OptionParser#ver を表示してから exit します。 OptionParser#ver が定義されていない場合は、そのようにエラーメッセージを出力して abort します。オプション「--version」に「,」で区切られたクラス名かモジュール名を引数として与えた場合は、そのクラスおよびモジュールで定義されている定数「Version」および「Release」を表示して、終了します。

 $ ruby t.rb --version=OptionParser,URI,OpenSSL
 t: OptionParser version 12203 (2007-04-20)
 t: URI version 0.9.11
 t: OpenSSL version 1.0.0

特異メソッド

定義 説明
accept(klass, pat = /.*/) {|str| ...} -> ()

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

getopts(argv, *opts) -> Hash
getopts(*opts) -> Hash

引数をパースした結果を、Hash として返します。(self.new.getopts と同じです)

new(banner = nil, width = 32, indent = ' ' * 4) -> OptionParser
new(banner = nil, width = 32, indent = ' ' * 4) {|opt| ...} -> OptionParser

OptionParser オブジェクトを生成して返します。

reject(klass) -> ()

OptionParser.accept メソッドで登録したブロックを削除します。

インスタンスメソッド

定義 説明
accept(klass, pat = /.*/) {|str| ...} -> ()

OptionParser.accept と同様ですが、登録したブロックはレシーバーに限定されます。

banner -> String

サマリの最初に表示される文字列を返します。

banner=(heading)

サマリの最初に表示される文字列を指定します。

default_argv -> [String]

自身がデフォルトでパースする引数を文字列の配列で返します。

default_argv=(argv)

自身がデフォルトでパースする引数を文字列の配列で指定します。

environment(env) -> [String]

環境変数 env に対して Shellwords.#shellwords を呼んで配列にしてから parse を行ないます。

getopts(argv, *opts) -> Hash
getopts(*opts) -> Hash

引数をパースした結果を、Hash として返します。

help -> String
to_s -> String

サマリの文字列を返します。

load(filename = nil) -> bool

指定された filename を読み込んで各行をまとめたものに対して OptionParser#parse を行ないます。

on(short, desc = "") {|v| ... } -> self
on(long, desc = "") {|v| ... } -> self
on(short, long, desc = "") {|v| ... } -> self

オプションを取り扱うためのブロックを自身に登録します。ブロックはコマンドラインのパース時に、オプションが指定されていれば呼ばれます。

on(short, pat = /.*/, desc = "") {|v| ...} -> self
on(long, pat = /.*/, desc = "") {|v| ...} -> self
on(short, long, pat = /.*/, desc = "") {|v| ...} -> self

オプションを取り扱うためのブロックを自身に登録します。ブロックはコマンドラインのパース時に、オプションが指定されていれば呼ばれます。

on(short, klass = String, desc = "") {|v| ...} -> self
on(long, klass = String, desc = "") {|v| ...} -> self
on(short, long, klass = String, desc = "") {|v| ...} -> self

オプションを取り扱うためのブロックを自身に登録します。ブロックはコマンドラインのパース時に、オプションが指定されていれば呼ばれます。

on(short, *rest) {|v| ...} -> self
on(long, *rest) {|v| ...} -> self
on(short, long, *rest) {|v| ...} -> self

オプションを取り扱うためのブロックを自身に登録します。ブロックはコマンドラインのパース時に、オプションが指定されていれば呼ばれます。

on_head(*arg, &block) -> self

オプションを取り扱うためのブロックを自身の持つリストの最初に登録します。

on_tail(*arg, &block) -> self

オプションを取り扱うためのブロックを自身の持つリストの最後に登録します。

order(argv, into: nil) -> [String]
order(argv, into: nil) {|s| ...} -> [String]
order(*args, into: nil) -> [String]
order(*args, into: nil) {|s| ...} -> [String]

与えられた argv を順番にパースします。オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。 argv からオプションを取り除いたものを返します。

order!(argv = self.default_argv, into: nil) -> [String]
order!(argv = self.default_argv, into: nil) {|s| ...} -> [String]

与えられた argv を順番に破壊的にパースします。 argv からオプションがすべて取り除かれます。 argv を返します。

parse(argv, into: nil) -> [String]
parse(*args, into: nil) -> [String]

与えられた argv をパースします。 argv からオプションを取り除いたものを返します。

parse!(argv = self.default_argv, into: nil) -> [String]

与えられた argv をパースします。

permute(argv, into: nil) -> [String]
permute(*args, into: nil) -> [String]

与えられた argv をパースします。オプションではないコマンドの引数(下の例で言うと somefile)があってもパースを中断しません。 argv からオプションを取り除いたものを返します。

permute!(argv = self.default_argv, into: nil) -> [String]

与えられた argv を破壊的にパースします。argv からオプションがすべて取り除かれます。オプションではないコマンドの引数(下の例で言うと somefile)があってもパースを中断しません。 argv を返します。

program_name -> String

プログラムの名前を文字列で返します。

program_name=(name)

プログラムの名前を文字列で指定します。

reject(klass) -> ()

OptionParser#accept で登録したクラスとブロックを自身から削除します。

release -> String

プログラムのリリースを文字列で返します。

release=(rel)

プログラムのリリースを文字列で指定します。

separator(sep) -> ()

サマリにオプションを区切るための文字列 sep を挿入します。オプションにいくつかの種類がある場合に、サマリがわかりやすくなります。

summarize(to = [], width = self.summary_width, max = width - 1, indent= self.summary_indent) -> ()
summarize(to = [], width = self.summary_width, max = width - 1, indent= self.summary_indent) {|line| ... } -> ()

サマリを指定された to へと加えていきます。

summary_indent -> String

サマリを表示する時のインデントを文字列で返します。

summary_indent=(indent)

サマリを表示する時のインデントを文字列で指定します。

summary_width -> Integer

サマリを表示するときの幅を整数で返します。

summary_width=(width)

サマリを表示するときの幅を整数で指定します。

to_a -> [String]

サマリの各行を要素とした配列を返します。

ver -> String

program_name、version と release から生成したバージョンを表す文字列を返します。

version -> String

プログラムのバージョンを文字列で返します。

version=(ver)

プログラムのバージョンを文字列で指定します。

継承したメソッド

! != __id__ __send__ instance_eval instance_exec method_missing singleton_method_added singleton_method_removed singleton_method_undefined !~ <=> == === =~ _dump class clone define_singleton_method display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy inspect instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? itself marshal_dump marshal_load method methods nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? send singleton_class singleton_method singleton_methods taint tainted? tap to_ary to_hash to_int to_io to_proc to_regexp to_str trust untaint untrust untrusted? yield_self .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_ENGINE_VERSION ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE