On Mon, Sep 02, 2013 at 04:16:30PM +0200, Andrej Mitrovic wrote: > On 9/2/13, Jacob Carlborg <[email protected]> wrote: > > This is a simple idea: > > > > uint timeout; > > getopt(args, "timeout|t", &timeout).help("Set the timeout");
I don't like having to call getopt multiple times. This is D, we have delegates, we should only need to traverse args once and do whatever it is we need to do. > W.r.t. help strings, I would prefer if we could instead use: > > getopt(args, > "timeout|t", &timeout, "Set the timeout", > "other", &other, // note: no comment! > "flag|f", &flag, "Set the flag") > > I think we could make getopt support this. For example: > > ["foo", &foo] => name, field > ["foo", &foo, "foo text"] => name, field, #3 is a comment > ["foo", &foo, "foo text", "bar", &bar] => #3 is a commen > ["foo", &foo, "foo text", &bar] => #3 is a new name > > Essentially all getopt has to do is slice up the arguments into > groups, where an address and the string before it begin a new group. [...] I like this idea. I like keeping the option definition, address, and help text all in one place. When a parse error occurs, getopt can display the help text for that particular option automatically. T -- Democracy: The triumph of popularity over principle. -- C.Bond
