Posted By: William Morgan
Date: 2007-02-02 23:17
Summary: trollop 1.0
Project: Trollop

trollop version 1.0 has been released!

Trollop is YAFCLAP --- yet another fine commandline argument
processing library for Ruby. Trollop is designed to provide the
maximal amount of GNU-style argument processing in the minimum number
of lines of code (for you, the programmer).

Trollop provides a nice automatically-generated help page, robust
option parsing, and sensible defaults for everything you don't
specify.

Synopsis:

###### simple ######

opts = Trollop::options do
opt :monkey, "Use monkey mode."
opt :goat, "Use goat model", :default => true
opt :num_limbs, "Set number of limbs", :default => 4
end

p opts

###### complex ######

opts = Trollop::options do
version "test 1.2.3 (c) 2007 William Morgan"
banner <<-EOS
Test is an awesome program that does something very, very important.

Usage:
test [options] <filenames>+
where [options] are:
EOS

opt :ignore, "Ignore incorrect values"
opt :file, "Extra data filename to read in, with a very long option description like this one", :type => String
opt :volume, "Volume level", :default => 3.0
opt :iters, "Number of iterations", :default => 5
end
Trollop::die :volume, "must be non-negative" if opts[:volume] < 0
Trollop::die :file, "must exist" unless File.exists?(opts[:file]) if opts[:file]

== REQUIREMENTS:

* none

Changes:

== 1.0 / 2007-01-29
* Initial release.

Latest News
v13.5.0 Released !!
    id 774 - 2013-05-18 12:28
Runt v0.9.0 Released
    Matthew Lipper - 2013-05-17 00:11
kramdown 1.0.2 released
    Thomas Leitner - 2013-05-09 06:58
mime-types 1.23 Released
    Austin Ziegler - 2013-04-21 01:41
diff-lcs 1.2.4 Released
    Austin Ziegler - 2013-04-21 00:08

 

Forums | Admin

Discussion Forums: trollop-1.0-released

Start New Thread Start New Thread

 

By:
RE: About using instance_exec [ reply ]  
2007-01-31 08:24
Right, I didn't tought in that way.

Another possibility could be to pass self or another object to transmit it's instance variables, but I don't think it would be clearer than your solution.

Here is an example :

@version = '3.6.2'
opts = Trollop::options(self) do
version @version
end

By: William Morgan
RE: About using instance_exec [ reply ]  
2007-01-31 01:18
Thanks for the comment. I think you mean instance variable, not local variable. Local variables are preserved, which is why I don't think this is too terrible. E.g. in your code you could do:

v = @version
opts = Trollop::options do
version v
end

Not great, but probably not that much worse than the standard ruby "var = nil" before a block trick to force local variable binding outside the block.

But, to make this slightly easier, in the next release (imminent) Trollop::options will relay any arguments to it as block arguments, so you can do:

opts = Trollop::options(@version) do |v|
version v
end

What do you think?

By:
About using instance_exec [ reply ]  
2007-01-30 06:28
By using instance_exec, you're loosing the local variables scope. So for example, this is not possible :

@version = '1.2.3'
opts = Trollop::options do
version @version
end