From: Daniel Hobe Date: 2005-12-06T11:01:19+09:00 Subject: Re: Proposed patch for optparse to fix multi line argument handling ------=_Part_13909_11830896.1133834472706 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline The attached patch fixes a bug in Optparse (at least I think it is a bug) where it would handle multi line option arguments by ignoring all lines but the first (if given with a short option) or stack trace (if given with a long option): hobe@moria:~>ruby -w opt_parse_test.rb -h Usage: opt_parse_test [options] -d, --dummy STRING Dummy option short option: hobe@moria:~>ruby -w opt_parse_test.rb -d "foo bar baz " Dummy argument: 'foo' long option: hobe@moria:~>ruby -w opt_parse_test.rb --dummy "foo bar baz " /usr/lib/ruby/1.8/optparse.rb:1278:in `order!': invalid argument: --dummy foo (OptionParser::InvalidArgument) bar baz from /usr/lib/ruby/1.8/optparse.rb:1278:in `parse_arg' from /usr/lib/ruby/1.8/optparse.rb:449:in `parse' from /usr/lib/ruby/1.8/optparse.rb:1278:in `order!' from /usr/lib/ruby/1.8/optparse.rb:1266:in `catch' from /usr/lib/ruby/1.8/optparse.rb:1266:in `order!' from /usr/lib/ruby/1.8/optparse.rb:1346:in `permute!' from /usr/lib/ruby/1.8/optparse.rb:1373:in `parse!' from opt_parse_test.rb:11 The fix is to add the multiline option to a regex: --- /usr/lib/ruby/1.8/optparse.rb 2005-11-30 17:46:27.000000000 -0800 +++ optparse.rb 2005-12-05 11:55:49.831818000 -0800 @@ -1495,7 +1495,7 @@ : String any none-empty string, and no conversion. =3Dend #'#"#`# - accept(String, /.+/) {|s,*|s} + accept(String, /.+/m) {|s,*|s} =3Dbegin : Integer -- Daniel Hobe After the darkness of her speech; I go bewildered in a mist of prophecies. ------=_Part_13909_11830896.1133834472706 Content-Type: application/octet-stream; name=optparse_patch.rb Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="optparse_patch.rb" --- /usr/lib/ruby/1.8/optparse.rb 2005-11-30 17:46:27.000000000 -0800 +++ optparse.rb 2005-12-05 11:55:49.831818000 -0800 @@ -1495,7 +1495,7 @@ : String any none-empty string, and no conversion. =end #'#"#`# - accept(String, /.+/) {|s,*|s} + accept(String, /.+/m) {|s,*|s} =begin : Integer ------=_Part_13909_11830896.1133834472706--