diff options
author | Junichi Ito <[email protected]> | 2022-11-29 08:07:47 +0900 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2022-12-26 15:09:21 +0900 |
commit | cea6951ecf31b1d4e93d102cc8f08822470d4d1a (patch) | |
tree | 85ee9e9de3a38e21ea1cea6b373c2c68435239f0 /lib/optparse.rb | |
parent | 4c767c1354038804abd1c94e7f549ed4f95a3d31 (diff) |
[ruby/optparse] Add symbolize_names to getopts
https://github.com/ruby/optparse/commit/3e63d878f8
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7025
Diffstat (limited to 'lib/optparse.rb')
-rw-r--r-- | lib/optparse.rb | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/optparse.rb b/lib/optparse.rb index 26683ef25d..7e0479bfff 100644 --- a/lib/optparse.rb +++ b/lib/optparse.rb @@ -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 # |