Forum: Ruby OptParse bug?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bec38d63650c8912b6ba9b557fb953b9?d=identicon&s=25 Roger Pack (rogerdpack)
on 2009-01-31 21:03
With this file:

C:\dev\thesis_p2pwebcode\src>cat example.rb
require 'optparse'

   OptionParser.new do |opts|

    opts.on('-p', '--do_multiples_with_variant=NAME', 'multiples variant
ex: ') do |name|
    end
   end.parse!


I get the following output:
Usage: example [options]
    -p=NAME                          multiples variant ex:
        --do_multiples_with_variant


however it doesn't actually accept -p=NAME
it accepts -pNAME

Anybody know if this is expected?
Thanks!
-=r
47b1910084592eb77a032bc7d8d1a84e?d=identicon&s=25 Joel VanderWerf (Guest)
on 2009-01-31 21:41
(Received via mailing list)
Roger Pack wrote:
>    end.parse!
>
> Anybody know if this is expected?
> Thanks!
> -=r

Seems to be a unix standard:

http://www.faqs.org/docs/artu/ch10s05.html
Bec38d63650c8912b6ba9b557fb953b9?d=identicon&s=25 Roger Pack (rogerdpack)
on 2009-01-31 23:34
>
> Seems to be a unix standard:
>
> http://www.faqs.org/docs/artu/ch10s05.html

So were you saying that having help output like
"-p=NAME" is standard when the input is actually "-pNAME" in use?

OptParse typically outputs
"-p --long=NAME"

but in this case it seems to output
"-p=NAME --long"

for some reason.

Thoughts?
-=r
47b1910084592eb77a032bc7d8d1a84e?d=identicon&s=25 Joel VanderWerf (Guest)
on 2009-01-31 23:55
(Received via mailing list)
Roger Pack wrote:
> but in this case it seems to output
> "-p=NAME --long"
>
> for some reason.
>
> Thoughts?
> -=r

So, both of the following are issues, right?

1. parser doesn't accept syntax "-p=NAME", but only "-pNAME"

2. generated help text suggests otherwise, that the former is accepted

IMO, #1 is standard, but #2 is possibly the wrong behavior.

What is causing the difference between typical output and this case? Do
you see the "-p --long=NAME" variant for other options in the same
program? Looking at comparable output in my own use of optparse, the
format tends to look like this:

     -r, --read-options [FILE]        Read options from file [stdin]
B57c5af36f5c1f33243dd8b2dd9043b1?d=identicon&s=25 F. Senault (Guest)
on 2009-02-01 00:40
(Received via mailing list)
Le 31 janvier 2009 à 23:55, Joel VanderWerf a écrit :

> What is causing the difference between typical output and this case? Do
> you see the "-p --long=NAME" variant for other options in the same
> program? Looking at comparable output in my own use of optparse, the
> format tends to look like this:
>
>      -r, --read-options [FILE]        Read options from file [stdin]

It seems to be the length of the option name :

0:33 fred@ardberg:/data/ruby/blackops% irb
>> require 'optparse' ; OptionParser.new do |o|
?>     o.on('-p', '--12345678901234567890=NAME',
?>       'multiples variant ex: ') {}
>>   end.parse(['-h'])
Usage: irb [options]
    -p, --12345678901234567890=NAME  multiples variant ex:

>> require 'optparse' ; OptionParser.new do |o|
?>     o.on('-p', '--123456789012345678901234567890=NAME',
?>       'multiples variant ex: ') {}
>>   end.parse(['-h'])
Usage: irb [options]
    -p=NAME
        --123456789012345678901234567890
                                     multiples variant ex:

When short + long + value + description are too long to hold on a single
line, optionparser tries to present it better, and it shows the bug.

Fred
This topic is locked and can not be replied to.