summaryrefslogtreecommitdiff
path: root/lib/optparse
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-14 13:26:13 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-14 13:26:13 +0000
commit0687baaf57ac2fef4ed5406d1a37e05658f8859f (patch)
tree71373d0732765b91d0c6be900459b56d51228f78 /lib/optparse
parentb40d13a9940ecb310932fe0bfe747f5ef66afcdd (diff)
optparse/kwargs.rb
* lib/optparse/kwargs.rb (OptionParser#define_by_keywords): [EXPERIMENTAL] extract command line option definitions from the information of keyword arguments. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/optparse')
-rw-r--r--lib/optparse/kwargs.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/optparse/kwargs.rb b/lib/optparse/kwargs.rb
new file mode 100644
index 0000000000..ed58cc142b
--- /dev/null
+++ b/lib/optparse/kwargs.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+require 'optparse'
+
+class OptionParser
+ def define_by_keywords(options, meth, **opts)
+ meth.parameters.each do |type, name|
+ case type
+ when :key, :keyreq
+ op, cl = *(type == :key ? %w"[ ]" : ["", ""])
+ define("--#{name}=#{op}#{name.upcase}#{cl}", *opts[name]) do |o|
+ options[name] = o
+ end
+ end
+ end
+ options
+ end
+end