[前][次][番号順一覧][スレッド一覧]

ruby-changes:43385

From: nagachika <ko1@a...>
Date: Mon, 20 Jun 2016 02:47:40 +0900 (JST)
Subject: [ruby-changes:43385] nagachika:r55459 (ruby_2_3): merge revision(s) 55228: [Backport #12438]

nagachika	2016-06-20 02:47:36 +0900 (Mon, 20 Jun 2016)

  New Revision: 55459

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=55459

  Log:
    merge revision(s) 55228: [Backport #12438]
    
    * lib/optparse.rb (OptionParser::Completion.candidate): get rid of
      nil as key names.  [ruby-core:75773] [Bug #12438]
    
    * lib/optparse.rb (OptionParser#make_switch): char class option
      cannot be NoArgument, default to RequiredArgument.

  Added files:
    branches/ruby_2_3/test/optparse/test_cclass.rb
  Modified directories:
    branches/ruby_2_3/
  Modified files:
    branches/ruby_2_3/ChangeLog
    branches/ruby_2_3/lib/optparse.rb
    branches/ruby_2_3/version.h
Index: ruby_2_3/version.h
===================================================================
--- ruby_2_3/version.h	(revision 55458)
+++ ruby_2_3/version.h	(revision 55459)
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_3/version.h#L1
 #define RUBY_VERSION "2.3.2"
 #define RUBY_RELEASE_DATE "2016-06-20"
-#define RUBY_PATCHLEVEL 134
+#define RUBY_PATCHLEVEL 135
 
 #define RUBY_RELEASE_YEAR 2016
 #define RUBY_RELEASE_MONTH 6
Index: ruby_2_3/lib/optparse.rb
===================================================================
--- ruby_2_3/lib/optparse.rb	(revision 55458)
+++ ruby_2_3/lib/optparse.rb	(revision 55459)
@@ -413,7 +413,7 @@ class OptionParser https://github.com/ruby/ruby/blob/trunk/ruby_2_3/lib/optparse.rb#L413
       candidates = []
       block.call do |k, *v|
         (if Regexp === k
-           kn = nil
+           kn = "".freeze
            k === key
          else
            kn = defined?(k.id2name) ? k.id2name : k
@@ -1336,6 +1336,7 @@ XXX https://github.com/ruby/ruby/blob/trunk/ruby_2_3/lib/optparse.rb#L1336
     default_pattern = nil
     klass = nil
     q, a = nil
+    has_arg = false
 
     opts.each do |o|
       # argument class
@@ -1414,6 +1415,8 @@ XXX https://github.com/ruby/ruby/blob/trunk/ruby_2_3/lib/optparse.rb#L1415
         if a
           default_style = default_style.guess(arg = a)
           default_pattern, conv = search(:atype, o) unless default_pattern
+        else
+          has_arg = true
         end
         sdesc << "-#{q}"
         short << Regexp.new(q)
@@ -1436,6 +1439,9 @@ XXX https://github.com/ruby/ruby/blob/trunk/ruby_2_3/lib/optparse.rb#L1439
 
     default_pattern, conv = search(:atype, default_style.pattern) unless default_pattern
     if !(short.empty? and long.empty?)
+      if has_arg and default_style == Switch::NoArgument
+        default_style = Switch::RequiredArgument
+      end
       s = (style || default_style).new(pattern || default_pattern,
                                        conv, sdesc, ldesc, arg, desc, block)
     elsif !block
Index: ruby_2_3/test/optparse/test_cclass.rb
===================================================================
--- ruby_2_3/test/optparse/test_cclass.rb	(revision 0)
+++ ruby_2_3/test/optparse/test_cclass.rb	(revision 55459)
@@ -0,0 +1,18 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_3/test/optparse/test_cclass.rb#L1
+# frozen_string_literal: false
+require_relative 'test_optparse'
+
+class TestOptionParser::CClass < TestOptionParser
+  def test_no_argument
+    flags = []
+    @opt.def_option("-[a-z]") {|x| flags << x}
+    no_error {@opt.parse!(%w"-a")}
+    assert_equal(%w"a", flags)
+  end
+
+  def test_required_argument
+    flags = []
+    @opt.def_option("-[a-z]X") {|x| flags << x}
+    no_error {@opt.parse!(%w"-a")}
+    assert_equal(%w"a", flags)
+  end
+end

Property changes on: ruby_2_3/test/optparse/test_cclass.rb
___________________________________________________________________
Added: svn:eol-style
   + LF

Index: ruby_2_3/ChangeLog
===================================================================
--- ruby_2_3/ChangeLog	(revision 55458)
+++ ruby_2_3/ChangeLog	(revision 55459)
@@ -1,3 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_3/ChangeLog#L1
+Mon Jun 20 02:38:29 2016  Nobuyoshi Nakada  <nobu@r...>
+
+	* lib/optparse.rb (OptionParser::Completion.candidate): get rid of
+	  nil as key names.  [ruby-core:75773] [Bug #12438]
+
+	* lib/optparse.rb (OptionParser#make_switch): char class option
+	  cannot be NoArgument, default to RequiredArgument.
+
 Mon Jun 20 02:25:44 2016  NARUSE, Yui  <naruse@r...>
 
 	* re.c (unescape_nonascii): scan hex up to only 3 characters.

Property changes on: ruby_2_3
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r55228


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]