From 7aefa8e580f06ff869411092e38b7a18ba44240d Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 26 Sep 2005 12:44:47 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 ----- lib/optparse.rb | 24 ++++++++++++++---------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2358a33972..fb3e91620c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,11 +2,6 @@ Mon Sep 26 20:59:28 2005 Hirokazu Yamamoto * parse.y: changed to ANSI function style. -Mon Sep 26 07:55:06 2005 Nobuyoshi Nakada - - * lib/optparse.rb (RequiredArgument#parse): not consume unmatched - argument. fixed [ruby-dev:27316] - Sun Sep 25 12:02:04 2005 Masatoshi SEKI * bin/erb: typo fixed. diff --git a/lib/optparse.rb b/lib/optparse.rb index 7135c79b34..f1f207327d 100644 --- a/lib/optparse.rb +++ b/lib/optparse.rb @@ -453,15 +453,12 @@ class OptionParser # # Raises an exception if argument is not present. # - def parse(arg, argv, &error) - opt = (val = parse_arg(val, &error))[1] - val = conv_arg(*val) - if opt and !arg - argv.shift - else - val[0] = nil + def parse(arg, argv) + unless arg + raise MissingArgument if argv.empty? + arg = argv.shift end - val + conv_arg(*parse_arg(arg) {|*exc| raise(*exc)}) end end @@ -484,7 +481,7 @@ class OptionParser # # Switch that takes an argument, which does not begin with '-'. # - class PlacedArgument < RequiredArgument + class PlacedArgument < self # # Returns nil if argument is not present or begins with '-'. # @@ -492,7 +489,14 @@ class OptionParser if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0])) return nil, block, nil end - super + opt = (val = parse_arg(val, &error))[1] + val = conv_arg(*val) + if opt and !arg + argv.shift + else + val[0] = nil + end + val end end end