[ruby/optparse] Add symbolize_names to getopts

3e63d878f8
This commit is contained in:
Junichi Ito 2022-11-29 08:07:47 +09:00 committed by Hiroshi SHIBATA
parent 4c767c1354
commit cea6951ecf
Notes: git 2025-04-09 13:49:37 +00:00
2 changed files with 31 additions and 6 deletions

View file

@ -1775,7 +1775,16 @@ XXX
# # params["bar"] = "x" # --bar x
# # params["zot"] = "z" # --zot Z
#
def getopts(*args)
# Option +symbolize_names+ (boolean) specifies whether returned Hash keys should be Symbols; defaults to +false+ (use Strings).
#
# 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
#
def getopts(*args, symbolize_names: false)
argv = Array === args.first ? args.shift : default_argv
single_options, *long_options = *args
@ -1804,14 +1813,14 @@ XXX
end
parse_in_order(argv, result.method(:[]=))
result
symbolize_names ? result.transform_keys(&:to_sym) : result
end
#
# See #getopts.
#
def self.getopts(*args)
new.getopts(*args)
def self.getopts(*args, symbolize_names: false)
new.getopts(*args, symbolize_names: symbolize_names)
end
#
@ -2289,8 +2298,8 @@ XXX
# rescue OptionParser::ParseError
# end
#
def getopts(*args)
options.getopts(self, *args)
def getopts(*args, symbolize_names: false)
options.getopts(self, *args, symbolize_names: symbolize_names)
end
#