I would like to build a hash from ARGV using UNIX type notation ie any
argument which begins with a hyphen or double hyphen is an option and
may have as value(s) the argument(s) which succeed it (if they don’t
have hyphens). Options without values should result in a hash element
which has a key and a dummy value (say “0”).
I suspect/hope there is a very simple “Ruby way” to do this, but I got
stuck thinking how to look ahead when iterating through ARGV. I’ve got
a bodged method of just taking pairs eg -a 1 -b 0 -c 3 etc, but it would
be nice to it properly. Any suggestions? All help appreciated!
I would like to build a hash from ARGV using UNIX type notation ie any
argument which begins with a hyphen or double hyphen is an option and
may have as value(s) the argument(s) which succeed it (if they don’t
have hyphens). Options without values should result in a hash element
which has a key and a dummy value (say “0”).
I suspect/hope there is a very simple “Ruby way” to do this, but I got
stuck thinking how to look ahead when iterating through ARGV. I’ve got
a bodged method of just taking pairs eg -a 1 -b 0 -c 3 etc, but it would
be nice to it properly. Any suggestions? All help appreciated!
I would like to build a hash from ARGV using UNIX type notation ie any
argument which begins with a hyphen or double hyphen is an option and
may have as value(s) the argument(s) which succeed it (if they don’t
have hyphens). Options without values should result in a hash element
which has a key and a dummy value (say “0”).
Then if you don’t like that, there are several other libraries that
other people have written with more “object like” APIs and very
forgettable names. One I came across recently was thor:
Reformatted excerpts from Toby R.'s message of 2010-01-25:
I suspect/hope there is a very simple “Ruby way” to do this, but I got
stuck thinking how to look ahead when iterating through ARGV. I’ve
got a bodged method of just taking pairs eg -a 1 -b 0 -c 3 etc, but it
would be nice to it properly. Any suggestions? All help appreciated!
You can start doing something simple with ARGV.each_slice(2), but any
kind of error checking quickly gets complicated. Trollop will do this
exact thing for you (turn ARGV into a hash with error checking).
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.