Fixing valid options for std.getopt

Dmitry Olshansky dmitry.olsh at gmail.com
Tue Aug 9 15:09:43 PDT 2011


On 10.08.2011 1:32, Jens Mueller wrote:
> Hi,
>
> I've added some changes to getopt to change when an options is
> accepted/rejected. I'm going to describe its old behavior in contrast
> with its old behavior.
>
> Consider parsing an option of Type T:
>
> T timeout;
> getopt(args, "t|timeout",&timeout);
>
> Short options (single dash):
> -t v accept (was rejected)
+1 on this, I recall spending about an hour trying to get why -t v is 
not working. Though I dunno why change -tv, I think it's widely used 
form and not only for numerics.
> -t=v accept
> -tv only accept for numeric v (was accepted for all types except associative arrays)
> Strange short options:
> -timeout v reject
> -timeout=v reject (was accepted)
> -timeoutv reject
> Long options (double dash):
> --timeout v accept
> --timeout=v accept
> --timeoutv reject
> Strange long options:
> --t v reject (was accepted)
> --t=v reject (was accepted)
> --tv reject
>
> I would like to know whether you find the new behavior better or if you
> prefer the old. Or even a mix of both. Or none of the above.
Like all of the above except -tv.
> The current behavior is quite simple if you remember some simple rules:
> 1. Short options consist of a single dash and a single character.
> 2. Long options consist of two dashes and more than one character.
> 3. Passing short and long options is supported by
>     <short/long option><space+><value>  and<short/long option>=<value>
> 4. The form<short option><value>  is only supported for numeric values.
Can't figure out the reason for 4, could you  clarify a bit?
> 5. Anything else is not supported and an exception is thrown.
>
> To look at the changes see here:
> https://github.com/jkm/phobos/commit/b208eeb142ff5a3f189c2595b9800425646b4794 (fixes old behavior)
> https://github.com/jkm/phobos/commit/a25cd2459418d462c85ab14c2d970dd413b4fb05 (introduces new behavior)
>
> Please comment.
>
> Jens


-- 
Dmitry Olshansky



More information about the Digitalmars-d mailing list