instance method
OptionParser#getopts
(*::String options) -> ::Hash[::String, untyped]
(::Array[::String] args, *::String options) -> ::Hash[::String, untyped]
getopts(*args, symbolize_names: false, **keywords)
lib/optparse.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/lib/optparse.rb, line 1901
def getopts(*args, symbolize_names: false, **keywords)
argv = Array === args.first ? args.shift : default_argv
single_options, *long_options = *args
result = {}
setter = (symbolize_names ?
->(name, val) {result[name.to_sym] = val}
: ->(name, val) {result[name] = val})
single_options.scan(/(.)(:)?/) do |opt, val|
if val
setter[opt, nil]
define("-#{opt} VAL")
else
setter[opt, false]
define("-#{opt}")
end
end if single_options
long_options.each do |arg|
arg, desc = arg.split(';', 2)
opt, val = arg.split(':', 2)
if val
setter[opt, (val unless val.empty?)]
define("--#{opt}=#{result[opt] || "VAL"}", *[desc].compact)
else
setter[opt, false]
define("--#{opt}", *[desc].compact)
end
end
parse_in_order(argv, setter, **keywords)
result
end
Wrapper method for getopts.rb.
Example
params = ARGV.getopts("ab:", "foo", "bar:", "zot:Z;zot option") # params["a"] = true # -a # params["b"] = "1" # -b1 # params["foo"] = "1" # --foo # params["bar"] = "x" # --bar x # params["zot"] = "z" # --zot Z
Option symbolize_names (boolean) specifies whether returned Hash keys should be Symbols; defaults to false (use Strings).
Example
params = ARGV.getopts("ab:", "foo", "bar:", "zot:Z;zot option", symbolize_names: true) # params[:a] = true # -a # params[:b] = "1" # -b1 # params[:foo] = "1" # --foo # params[:bar] = "x" # --bar x # params[:zot] = "z" # --zot Z