ライブラリ
- json (2)
- optparse (38)
- psych (1)
-
rexml
/ parsers / sax2parser (1) -
rexml
/ parsers / ultralightparser (1)
クラス
-
JSON
:: Parser (2) - OptionParser (38)
-
Psych
:: Parser (1) -
REXML
:: Parsers :: SAX2Parser (1) -
REXML
:: Parsers :: UltraLightParser (1)
キーワード
- accept (1)
-
default
_ argv (1) -
default
_ argv= (1) - environment (1)
- getopts (2)
- help (1)
- load (1)
-
on
_ head (1) -
on
_ tail (1) - order (4)
- order! (2)
- parse (5)
- parse! (1)
- permute (2)
- permute! (1)
-
program
_ name (1) -
program
_ name= (1) - reject (1)
- release (1)
- rewind (1)
- separator (1)
- source (1)
- summarize (2)
-
summary
_ indent (1) -
summary
_ indent= (1) -
summary
_ width (1) -
summary
_ width= (1) -
to
_ a (1) -
to
_ s (1) - ver (1)
検索結果
先頭5件
-
REXML
:: Parsers :: SAX2Parser # parse -> () (18148.0) -
REXML::Parsers::SAX2Parser.new で指定した XML を パースし、その結果によって REXML::Parsers::SAX2Parser#listen で 指定したコールバックを呼び出します。
REXML::Parsers::SAX2Parser.new で指定した XML を
パースし、その結果によって REXML::Parsers::SAX2Parser#listen で
指定したコールバックを呼び出します。
@raise REXML::ParseException XML文書のパースに失敗した場合に発生します
@raise REXML::UndefinedNamespaceException XML文書のパース中に、定義されていない名前空間
が現れた場合に発生します -
REXML
:: Parsers :: UltraLightParser # rewind -> () (18052.0) -
REXML::Parsers::UltraLightParser.new で指定した stream を rewind してもう一度パースできる状態にします。
REXML::Parsers::UltraLightParser.new で指定した stream を
rewind してもう一度パースできる状態にします。 -
JSON
:: Parser # parse -> object (9094.0) -
現在のソースをパースして結果を Ruby のオブジェクトとして返します。
現在のソースをパースして結果を Ruby のオブジェクトとして返します。
//emlist[例][ruby]{
require 'json'
class Person
attr_accessor :name, :age
def []=(key, value)
instance_variable_set("@#{key}", value)
end
end
parser = JSON::Parser.new(DATA.read, object_class: Person)
person = parser.parse
person.class # => Person
p... -
JSON
:: Parser # source -> String (9076.0) -
現在のソースのコピーを返します。
現在のソースのコピーを返します。
//emlist[例][ruby]{
require 'json'
parser = JSON::Parser.new(DATA.read)
print parser.source
# => {
# => "Tanaka": {
# => "name":"tanaka",
# => "age":20
# => },
# => "Suzuki": {
# => "name":"suzuki",
# => "age":25
# => }
# => }
__END__
{
"Tanaka": {
... -
OptionParser
# reject(klass) -> () (9076.0) -
OptionParser#accept で登録したクラスとブロックを 自身から削除します。
OptionParser#accept で登録したクラスとブロックを
自身から削除します。
@param klass 自身から削除したいクラスを指定します。
//emlist[例][ruby]{
require "optparse"
require "time"
def parse(option_parser)
option_parser.on("-t", "--time [TIME]", Time) do |time|
p time.class
end
option_parser.parse(ARGV)
end
opts = OptionParser.new
o... -
Psych
:: Parser # parse(yaml) -> self (9058.0) -
YAML ドキュメントをパースし、イベントハンドラに イベントを逐次通知します。
YAML ドキュメントをパースし、イベントハンドラに
イベントを逐次通知します。
@see Psych::Parser.new, Psych::Handler, Psych::Parser#handler -
OptionParser
# on _ tail(*arg , &block) -> self (9040.0) -
オプションを取り扱うためのブロックを自身の持つリストの最後に登録します。
オプションを取り扱うためのブロックを自身の持つリストの最後に登録します。
--version や --help の説明をサマリの最後に表示したい時に便利です。
@param arg OptionParser#on と同様です。
@param block OptionParser#on と同様です。
//emlist[例][ruby]{
require "optparse"
opts = OptionParser.new do |opts|
opts.on_head("-i", "--init")
opts.on("-u", "--update")
opts.on_tai... -
OptionParser
# accept(klass , pat = / . * / ) {|str| . . . } -> () (9022.0) -
OptionParser.accept と同様ですが、 登録したブロックはレシーバーに限定されます。
OptionParser.accept と同様ですが、
登録したブロックはレシーバーに限定されます。
@param klass クラスオブジェクトを与えます。
@param pat match メソッドを持ったオブジェクト(Regexp オブジェクトなど)を与えます。
//emlist[例][ruby]{
require "optparse"
require "time"
opts = OptionParser.new
opts.accept(Time) do |s,|
begin
Time.parse(s) if s
rescue
raise OptionP... -
OptionParser
# banner -> String (9022.0) -
サマリの最初に表示される文字列を返します。
サマリの最初に表示される文字列を返します。
@return サマリの最初に表示される文字列を返します。
//emlist[例][ruby]{
require "optparse"
options = {}
opts = OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
options[:verbose] = v
end
end
p opts.banner # =... -
OptionParser
# banner=(heading) (9022.0) -
サマリの最初に表示される文字列を指定します。
サマリの最初に表示される文字列を指定します。
@param heading サマリの最初に表示される文字列を指定します。
//emlist[例][ruby]{
require "optparse"
options = {}
opts = OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]" # => "Usage: example.rb [options]"
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
option... -
OptionParser
# default _ argv -> [String] (9022.0) -
自身がデフォルトでパースする引数を文字列の配列で返します。
自身がデフォルトでパースする引数を文字列の配列で返します。
@param argv デフォルトでパースする文字列の配列を返します。
//emlist[例][ruby]{
require "optparse"
opts = OptionParser.new
# --hoo param1 --bar param2 をパラメーターに指定して実行
opts.default_argv # => ["--foo", "param1", "--bar", "param2"]
//} -
OptionParser
# default _ argv=(argv) (9022.0) -
自身がデフォルトでパースする引数を文字列の配列で指定します。
自身がデフォルトでパースする引数を文字列の配列で指定します。
OptionParser#parse の引数が指定されなかったときに使われます。
@param argv デフォルトでパースしたい文字列の配列を指定します。
//emlist[例][ruby]{
require "optparse"
config = {}
opts = OptionParser.new
opts.on("-r", "--require LIBRARY"){|lib| config[:lib] = lib }
# パラメーター指定なしで実行
opts.default_argv # => []
opts.p... -
OptionParser
# environment(env) -> [String] (9022.0) -
環境変数 env に対して Shellwords.#shellwords を呼 んで配列にしてから parse を行ないます。
環境変数 env に対して
Shellwords.#shellwords を呼
んで配列にしてから parse を行ないます。
@param env 環境変数名を文字列で与えます。
@raise OptionParser::ParseError パースに失敗した場合、発生します。
実際は OptionParser::ParseError のサブク
ラスになります。
//emlist[例][ruby]{
require "optparse"
config = ... -
OptionParser
# getopts(*opts) -> Hash (9022.0) -
引数をパースした結果を、Hash として返します。
引数をパースした結果を、Hash として返します。
配列 argv を与えた場合、argv をパースします。そうでない場合は、
default_argv をパースします。
//emlist[][ruby]{
opt = OptionParser.new
params = opt.getopts(ARGV, "ab:", "foo", "bar:")
# params["a"] = true # -a
# params["b"] = "1" # -b1
# params["foo"] = true # --foo
# params["bar"] = "x" # --bar x... -
OptionParser
# getopts(argv , *opts) -> Hash (9022.0) -
引数をパースした結果を、Hash として返します。
引数をパースした結果を、Hash として返します。
配列 argv を与えた場合、argv をパースします。そうでない場合は、
default_argv をパースします。
//emlist[][ruby]{
opt = OptionParser.new
params = opt.getopts(ARGV, "ab:", "foo", "bar:")
# params["a"] = true # -a
# params["b"] = "1" # -b1
# params["foo"] = true # --foo
# params["bar"] = "x" # --bar x... -
OptionParser
# help -> String (9022.0) -
サマリの文字列を返します。
サマリの文字列を返します。
//emlist[例][ruby]{
require "optparse"
options = {}
opts = OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
options[:verbose] = v
end
end
puts opts.help
# => Usage: example.rb [options]
# -v... -
OptionParser
# load(filename = nil) -> bool (9022.0) -
指定された filename を読み込んで各行をまとめたものに対して OptionParser#parse を行ないます。
指定された filename を読み込んで各行をまとめたものに対して OptionParser#parse を行ないます。
パースが成功した場合に true を返します。
ファイルが存在しなかった場合に false を返します。
@param filename 各行をパースしたいファイルの名前を文字列で指定します。
指定されないか nil である場合、~/.options/ に
プログラムのサフィックスを付けた '~/.options/コマンド名' というファイルをパースします。
//emlist[例][ruby]{
re... -
OptionParser
# on _ head(*arg , &block) -> self (9022.0) -
オプションを取り扱うためのブロックを自身の持つリストの最初に登録します。
オプションを取り扱うためのブロックを自身の持つリストの最初に登録します。
@param arg OptionParser#on と同様です。
@param block OptionParser#on と同様です。
//emlist[例][ruby]{
require "optparse"
opts = OptionParser.new do |opts|
opts.on_head("-i", "--init")
opts.on("-u", "--update")
opts.on_tail("-h", "--help")
end
puts opts.help
# => ... -
OptionParser
# order!(argv = self . default _ argv , into: nil) -> [String] (9022.0) -
与えられた argv を順番に破壊的にパースします。 argv からオプションがすべて取り除かれます。 argv を返します。
与えられた argv を順番に破壊的にパースします。
argv からオプションがすべて取り除かれます。
argv を返します。
オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。
ブロックが与えられている場合は、パースを中断せずに
引数をブロックに渡してブロックを評価し、パースを継続します。argv を返します。
下の例で言うと、コマンドの引数 somefile よりも後ろにオプションを置くことができません。
-b もコマンドのオプションではない引数として扱われてしまいます。
@param argv パースしたい引数を文字列の配列で指定... -
OptionParser
# order!(argv = self . default _ argv , into: nil) {|s| . . . } -> [String] (9022.0) -
与えられた argv を順番に破壊的にパースします。 argv からオプションがすべて取り除かれます。 argv を返します。
与えられた argv を順番に破壊的にパースします。
argv からオプションがすべて取り除かれます。
argv を返します。
オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。
ブロックが与えられている場合は、パースを中断せずに
引数をブロックに渡してブロックを評価し、パースを継続します。argv を返します。
下の例で言うと、コマンドの引数 somefile よりも後ろにオプションを置くことができません。
-b もコマンドのオプションではない引数として扱われてしまいます。
@param argv パースしたい引数を文字列の配列で指定... -
OptionParser
# order(*args , into: nil) -> [String] (9022.0) -
与えられた argv を順番にパースします。 オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。 argv からオプションを取り除いたものを返します。
与えられた argv を順番にパースします。
オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。
argv からオプションを取り除いたものを返します。
ブロックが与えられている場合は、パースを中断せずに引数をブロックに渡してブロックを評価し、
パースを継続します。argv を返します。
下の例で言うと、コマンドの引数 somefile よりも後ろにオプションを置くことができま
せん。-b もコマンドのオプションではない引数として扱われてしまいます。
@param argv パースしたい引数を文字列の配列で指定します。
@param a... -
OptionParser
# order(*args , into: nil) {|s| . . . } -> [String] (9022.0) -
与えられた argv を順番にパースします。 オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。 argv からオプションを取り除いたものを返します。
与えられた argv を順番にパースします。
オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。
argv からオプションを取り除いたものを返します。
ブロックが与えられている場合は、パースを中断せずに引数をブロックに渡してブロックを評価し、
パースを継続します。argv を返します。
下の例で言うと、コマンドの引数 somefile よりも後ろにオプションを置くことができま
せん。-b もコマンドのオプションではない引数として扱われてしまいます。
@param argv パースしたい引数を文字列の配列で指定します。
@param a... -
OptionParser
# order(argv , into: nil) -> [String] (9022.0) -
与えられた argv を順番にパースします。 オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。 argv からオプションを取り除いたものを返します。
与えられた argv を順番にパースします。
オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。
argv からオプションを取り除いたものを返します。
ブロックが与えられている場合は、パースを中断せずに引数をブロックに渡してブロックを評価し、
パースを継続します。argv を返します。
下の例で言うと、コマンドの引数 somefile よりも後ろにオプションを置くことができま
せん。-b もコマンドのオプションではない引数として扱われてしまいます。
@param argv パースしたい引数を文字列の配列で指定します。
@param a... -
OptionParser
# order(argv , into: nil) {|s| . . . } -> [String] (9022.0) -
与えられた argv を順番にパースします。 オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。 argv からオプションを取り除いたものを返します。
与えられた argv を順番にパースします。
オプションではないコマンドの引数(下の例で言うと somefile)に出会うと、パースを中断します。
argv からオプションを取り除いたものを返します。
ブロックが与えられている場合は、パースを中断せずに引数をブロックに渡してブロックを評価し、
パースを継続します。argv を返します。
下の例で言うと、コマンドの引数 somefile よりも後ろにオプションを置くことができま
せん。-b もコマンドのオプションではない引数として扱われてしまいます。
@param argv パースしたい引数を文字列の配列で指定します。
@param a... -
OptionParser
# parse!(argv = self . default _ argv , into: nil) -> [String] (9022.0) -
与えられた argv をパースします。
与えられた argv をパースします。
OptionParser#permute! と同様に argv を破壊的にパースします。
環境変数に POSIXLY_CORRECT が設定されている場合は、
OptionParser#order! と同様に振舞います。
@param argv パースしたい引数を文字列の配列で指定します。
@param into オプションを格納するハッシュを指定します。
指定したハッシュにはオプションの名前をキーとして、OptionParser#onに渡されたブロックの値が格納されます。
キーの名前はロングオプシ... -
OptionParser
# parse(*args , into: nil) -> [String] (9022.0) -
与えられた argv をパースします。 argv からオプションを取り除いたものを返します。
与えられた argv をパースします。
argv からオプションを取り除いたものを返します。
OptionParser#permute と同様に振舞います。しかし、
環境変数に POSIXLY_CORRECT が設定されている場合は、
OptionParser#order と同様に振舞います。
@param argv パースしたい引数を文字列の配列で指定します。
@param args パースしたい引数を順に文字列として与えます。
@param into オプションを格納するハッシュを指定します。
指定したハッシュにはオプションの名前をキーとして、Option... -
OptionParser
# parse(argv , into: nil) -> [String] (9022.0) -
与えられた argv をパースします。 argv からオプションを取り除いたものを返します。
与えられた argv をパースします。
argv からオプションを取り除いたものを返します。
OptionParser#permute と同様に振舞います。しかし、
環境変数に POSIXLY_CORRECT が設定されている場合は、
OptionParser#order と同様に振舞います。
@param argv パースしたい引数を文字列の配列で指定します。
@param args パースしたい引数を順に文字列として与えます。
@param into オプションを格納するハッシュを指定します。
指定したハッシュにはオプションの名前をキーとして、Option... -
OptionParser
# permute!(argv = self . default _ argv , into: nil) -> [String] (9022.0) -
与えられた argv を破壊的にパースします。argv からオプションがすべて取り除かれます。 オプションではないコマンドの引数(下の例で言うと somefile)があってもパースを中断しません。 argv を返します。
与えられた argv を破壊的にパースします。argv からオプションがすべて取り除かれます。
オプションではないコマンドの引数(下の例で言うと somefile)があってもパースを中断しません。
argv を返します。
下の例で言うと、order と違いコマンドの引数 somefile よりも後ろにオプションを置くことが
できます。
@param argv パースしたい引数を文字列の配列で指定します。
@param into オプションを格納するハッシュを指定します。
指定したハッシュにはオプションの名前をキーとして、OptionParser#onに渡されたブ... -
OptionParser
# permute(*args , into: nil) -> [String] (9022.0) -
与えられた argv をパースします。 オプションではないコマンドの引数(下の例で言うと somefile)があってもパースを中断しません。 argv からオプションを取り除いたものを返します。
与えられた argv をパースします。
オプションではないコマンドの引数(下の例で言うと somefile)があってもパースを中断しません。
argv からオプションを取り除いたものを返します。
下の例で言うと、order と違いコマンドの引数 somefile よりも後ろにオプションを置くことが
できます。
@param argv パースしたい引数を文字列の配列で指定します。
@param args パースしたい引数を順に文字列として与えます。
@param into オプションを格納するハッシュを指定します。
指定したハッシュにはオプションの名前をキーとし... -
OptionParser
# permute(argv , into: nil) -> [String] (9022.0) -
与えられた argv をパースします。 オプションではないコマンドの引数(下の例で言うと somefile)があってもパースを中断しません。 argv からオプションを取り除いたものを返します。
与えられた argv をパースします。
オプションではないコマンドの引数(下の例で言うと somefile)があってもパースを中断しません。
argv からオプションを取り除いたものを返します。
下の例で言うと、order と違いコマンドの引数 somefile よりも後ろにオプションを置くことが
できます。
@param argv パースしたい引数を文字列の配列で指定します。
@param args パースしたい引数を順に文字列として与えます。
@param into オプションを格納するハッシュを指定します。
指定したハッシュにはオプションの名前をキーとし... -
OptionParser
# program _ name -> String (9022.0) -
プログラムの名前を文字列で返します。
プログラムの名前を文字列で返します。
デフォルトは $0 が使われます。
@return プログラムの名前を文字列で返します。
//emlist[例][ruby]{
require "optparse"
OptionParser.new do |opts|
p $0 # => /path/to/filename.rb
p opts.program_name # => filename
end
//} -
OptionParser
# program _ name=(name) (9022.0) -
プログラムの名前を文字列で指定します。
プログラムの名前を文字列で指定します。
@param name プログラムの名前を文字列で指定します。
//emlist[例][ruby]{
require "optparse"
OptionParser.new do |opts|
$0 # => /path/to/filename.rb
opts.program_name # => filename
opts.program_name = 'test' # => "test"
opts.program_name # => "test"... -
OptionParser
# release -> String (9022.0) -
プログラムのリリースを文字列で返します。
プログラムのリリースを文字列で返します。
//emlist[例][ruby]{
require "optparse"
OptionParser.new do |opts|
opts.release # => nil
opts.release = "2019-05-01"
opts.release # => "2019-05-01"
end
//} -
OptionParser
# separator(sep) -> () (9022.0) -
サマリにオプションを区切るための文字列 sep を挿入します。 オプションにいくつかの種類がある場合に、サマリがわかりやすくなります。
サマリにオプションを区切るための文字列 sep を挿入します。
オプションにいくつかの種類がある場合に、サマリがわかりやすくなります。
サマリには on メソッドを呼んだ順にオプションが表示されるので、区切りを挿入したい
ところでこのメソッドを呼びます。
@param sep サマリの区切りを文字列で指定します。
//emlist[][ruby]{
require 'optparse'
opts = OptionParser.new
opts.banner = "Usage: example.rb [options]"
opts.separator ""
opts.separator... -
OptionParser
# summarize(to = [] , width = self . summary _ width , max = width - 1 , indent= self . summary _ indent) -> () (9022.0) -
サマリを指定された to へと加えていきます。
サマリを指定された to へと加えていきます。
ブロックが与えられた場合、サマリの各行を引数としてブロックを評価します。
この場合、ブロックの中で明示的に to へと加えていかない限り、
to にサマリが加えられることはありません。
@param to サマリを出力するオブジェクトを指定します。to には << メソッドが定義されいる必要があります。
@param width サマリの幅を整数で指定します。
@param max サマリの最大幅を整数で指定します。
@param indent サマリのインデントを文字列で指定します。
//emlist[例][ruby]{
requ... -
OptionParser
# summarize(to = [] , width = self . summary _ width , max = width - 1 , indent= self . summary _ indent) {|line| . . . } -> () (9022.0) -
サマリを指定された to へと加えていきます。
サマリを指定された to へと加えていきます。
ブロックが与えられた場合、サマリの各行を引数としてブロックを評価します。
この場合、ブロックの中で明示的に to へと加えていかない限り、
to にサマリが加えられることはありません。
@param to サマリを出力するオブジェクトを指定します。to には << メソッドが定義されいる必要があります。
@param width サマリの幅を整数で指定します。
@param max サマリの最大幅を整数で指定します。
@param indent サマリのインデントを文字列で指定します。
//emlist[例][ruby]{
requ... -
OptionParser
# summary _ indent -> String (9022.0) -
サマリを表示する時のインデントを文字列で返します。
サマリを表示する時のインデントを文字列で返します。
@return サマリを表示する時のインデントを文字列で返します。
//emlist[例][ruby]{
require "optparse"
opts = OptionParser.new do |opts|
opts.on_head("-i", "--init")
opts.on("-u", "--update")
opts.on_tail("-h", "--help")
end
opts.summary_indent # => " "
opts.summarize
# => [" -i,... -
OptionParser
# summary _ indent=(indent) (9022.0) -
サマリを表示する時のインデントを文字列で指定します。
サマリを表示する時のインデントを文字列で指定します。
@param indent サマリを表示する時に使われるインデントを文字列で指定します。
//emlist[例][ruby]{
require "optparse"
opts = OptionParser.new do |opts|
opts.on_head("-i", "--init")
opts.on("-u", "--update")
opts.on_tail("-h", "--help")
end
opts.summary_indent # => " "
opts.summarize
# ... -
OptionParser
# summary _ width -> Integer (9022.0) -
サマリを表示するときの幅を整数で返します。
サマリを表示するときの幅を整数で返します。
@return サマリを表示するときの幅を整数で返します。
//emlist[例][ruby]{
require "optparse"
opts = OptionParser.new do |opts|
opts.on_head("-i", "--init")
opts.on("-u", "--update")
opts.on_tail("-h", "--help")
end
opts.summary_width # => 32
opts.summarize
# => [" -i, --init\n", " ... -
OptionParser
# summary _ width=(width) (9022.0) -
サマリを表示するときの幅を整数で指定します。
サマリを表示するときの幅を整数で指定します。
@param width サマリを表示するときの幅を整数で指定します。
//emlist[例][ruby]{
require "optparse"
opts = OptionParser.new do |opts|
opts.on_head("-i", "--init")
opts.on("-u", "--update")
opts.on_tail("-h", "--help")
end
opts.summary_width # => 32
opts.summarize
# => [" -i, --init\n"... -
OptionParser
# to _ a -> [String] (9022.0) -
サマリの各行を要素とした配列を返します。
サマリの各行を要素とした配列を返します。
//emlist[例][ruby]{
require "optparse"
opts = OptionParser.new do |opts|
opts.on_head("-i", "--init")
opts.on("-u", "--update")
opts.on_tail("-h", "--help")
end
opts.to_a # => ["Usage: test [options]", " -i, --init\n", " -u, --update\n", " -h, --help\n"]
//} -
OptionParser
# to _ s -> String (9022.0) -
サマリの文字列を返します。
サマリの文字列を返します。
//emlist[例][ruby]{
require "optparse"
options = {}
opts = OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
options[:verbose] = v
end
end
puts opts.help
# => Usage: example.rb [options]
# -v... -
OptionParser
# ver -> String (9022.0) -
program_name、version と release から生成したバージョンを表す文字列を返します。
program_name、version と release から生成したバージョンを表す文字列を返します。
//emlist[例][ruby]{
require "optparse"
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.program_name = "Optparse Example"
opts.version = [0, 1]
opts.release = "2019-05-01"
opts.on_tail("--version", "Show v...