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

ruby-changes:11648

From: nobu <ko1@a...>
Date: Sun, 26 Apr 2009 15:13:26 +0900 (JST)
Subject: [ruby-changes:11648] Ruby:r23286 (trunk): * lib/optparse.rb (OptionParser#parse_in_order): do not make an

nobu	2009-04-26 15:13:11 +0900 (Sun, 26 Apr 2009)

  New Revision: 23286

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23286

  Log:
    * lib/optparse.rb (OptionParser#parse_in_order): do not make an
      option from non-option argument.  [ruby-dev:38333]

  Modified files:
    trunk/ChangeLog
    trunk/lib/optparse.rb
    trunk/test/optparse/test_optparse.rb
    trunk/test/optparse/test_placearg.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23285)
+++ ChangeLog	(revision 23286)
@@ -1,3 +1,8 @@
+Sun Apr 26 15:13:09 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* lib/optparse.rb (OptionParser#parse_in_order): do not make an
+	  option from non-option argument.  [ruby-dev:38333]
+
 Sat Apr 25 19:11:13 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* configure.in (ac_cv_func_daemon): use daemon(3) only on *BSD.
Index: lib/optparse.rb
===================================================================
--- lib/optparse.rb	(revision 23285)
+++ lib/optparse.rb	(revision 23286)
@@ -1304,7 +1304,7 @@
           begin
             opt, cb, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
             raise InvalidOption, arg if has_arg and !eq and arg == "-#{opt}"
-            argv.unshift(opt) if opt and (opt = opt.sub(/\A-*/, '-')) != '-'
+            argv.unshift(opt) if opt and (!rest or (opt = opt.sub(/\A-*/, '-')) != '-')
             val = cb.call(val) if cb
             setter.call(sw.switch_name, val) if setter
           rescue ParseError
Index: test/optparse/test_placearg.rb
===================================================================
--- test/optparse/test_placearg.rb	(revision 23285)
+++ test/optparse/test_placearg.rb	(revision 23286)
@@ -5,6 +5,7 @@
     super
     @opt.def_option("-x [VAL]") {|x| @flag = x}
     @opt.def_option("--option [VAL]") {|x| @flag = x}
+    @opt.def_option("-T [level]", /^[0-4]$/, Integer) {|x| @topt = x}
     @opt.def_option("-n") {}
   end
 
@@ -42,4 +43,11 @@
     assert_equal(%w"", no_error {@opt.parse!(%w"--opt bar")})
     assert_equal("bar", @flag)
   end
+
+  def test_conv
+    assert_equal(%w"te.rb", no_error('[ruby-dev:38333]') {@opt.parse!(%w"-T te.rb")})
+    assert_nil(@topt)
+    assert_equal(%w"te.rb", no_error('[ruby-dev:38333]') {@opt.parse!(%w"-T1 te.rb")})
+    assert_equal(1, @topt)
+  end
 end
Index: test/optparse/test_optparse.rb
===================================================================
--- test/optparse/test_optparse.rb	(revision 23285)
+++ test/optparse/test_optparse.rb	(revision 23286)
@@ -8,6 +8,8 @@
   end
   def no_error(*args)
     assert_nothing_raised(*args) {return yield}
+  ensure
+    $!.backtrace.delete_if {|e| /\A#{Regexp.quote(__FILE__)}:#{__LINE__-2}/o =~ e} if $!
   end
 
   def test_permute

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

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