This has been bugging me for weeks now, intermittently.
By all accounts I've read, this getoptlong code should work
require 'getoptlong'
opts = GetoptLong.new(
["--devel","-d",GetoptLong::NO_ARGUMENT],
["--getpass","-g",GetoptLong::NO_ARGUMENT],
["--debug","-D",GetoptLong::NO_ARGUMENT],
["--verbose","-V",GetoptLong::NO_ARGUMENT]
)
server = 'http://192.168.10.16/'
verbose = false
opts.each { |o,a| p o }
opts.each { |o,a|
case o
when '--devel'
server = 'http://192.168.20.56/'
when '--getpass'
puts "this option does nothing"
when '--debug': $DEBUG = true
when '--verbose': verbose = true
end
}
p server
p $DEBUG
p verbose
This is the output I expect when I run it:
"--devel"
"--debug"
"--verbose"
"http://192.168.20.56/"
true
This is the output I get:
"--devel"
"--debug"
"--verbose"
"http://192.168.10.16/"
false
What am I missing?
···
--
--------------------------------------------------------------------------
Matt Rose mattrose@folkwolf.net Visit my blog! http://folkwolf.net
He's a short-sighted vegetarian cop with acid for blood. She's a
green-fingered punk lawyer who can talk to animals. They fight crime!
This has been bugging me for weeks now, intermittently.
By all accounts I've read, this getoptlong code should work
require 'getoptlong'
opts = GetoptLong.new(
["--devel","-d",GetoptLong::NO_ARGUMENT],
["--getpass","-g",GetoptLong::NO_ARGUMENT],
["--debug","-D",GetoptLong::NO_ARGUMENT],
["--verbose","-V",GetoptLong::NO_ARGUMENT]
)
server = 'http://192.168.10.16/'
verbose = false
opts.each { |o,a| p o }
opts.each { |o,a|
case o
when '--devel'
server = 'http://192.168.20.56/'
when '--getpass'
puts "this option does nothing"
when '--debug': $DEBUG = true
when '--verbose': verbose = true
end
}
p server
p $DEBUG
p verbose
This is the output I expect when I run it:
"--devel"
"--debug"
"--verbose"
"http://192.168.20.56/"
true
true
This is the output I get:
"--devel"
"--debug"
"--verbose"
"http://192.168.10.16/"
false
false
What am I missing?
Insert a "p a" in the second opts.each block and see what happens. 
Kind regards
robert
···
2006/3/7, Matt Rose <mattrose@folkwolf.net>:
--
Have a look: Robert K. | Flickr
harp:~ > diff -ubB a.rb.org a.rb
--- a.rb.org 2006-03-07 07:56:07.000000000 -0700
+++ a.rb 2006-03-07 07:58:12.000000000 -0700
@@ -9,7 +9,7 @@
server = 'http://192.168.10.16/'
verbose = false
-opts.each { |o,a| p o }
+#opts.each { |o,a| p o }
opts.each { |o,a|
case o
when '--devel'
harp:~ > ruby -- a.rb --debug --devel --verbose
"http://192.168.20.56/"
true
each is destructive - as most argv parsers are.
hth.
-a
···
On Tue, 7 Mar 2006, Matt Rose wrote:
This has been bugging me for weeks now, intermittently.
By all accounts I've read, this getoptlong code should work
require 'getoptlong'
opts = GetoptLong.new(
["--devel","-d",GetoptLong::NO_ARGUMENT],
["--getpass","-g",GetoptLong::NO_ARGUMENT],
["--debug","-D",GetoptLong::NO_ARGUMENT],
["--verbose","-V",GetoptLong::NO_ARGUMENT]
)
server = 'http://192.168.10.16/'
verbose = false
opts.each { |o,a| p o }
opts.each { |o,a|
case o
when '--devel'
server = 'http://192.168.20.56/'
when '--getpass'
puts "this option does nothing"
when '--debug': $DEBUG = true
when '--verbose': verbose = true
end
}
p server
p $DEBUG
p verbose
This is the output I expect when I run it:
"--devel"
"--debug"
"--verbose"
"http://192.168.20.56/"
true
This is the output I get:
"--devel"
"--debug"
"--verbose"
"http://192.168.10.16/"
false
What am I missing?
--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama
cat a.rb
Matt Rose <mattrose@folkwolf.net> writes:
What am I missing?
GetoptLong::each as well as GetoptLong::get consume the options. After
the first opts.each{..} your opts are emtpy.
The docs don't mention that, I think. I also had those troubles when I
used opts.get == nil to check if no options were given.
Perhaps you should have a look at the optparse module in the stdlib.
Regards,
Tassilo
This has been bugging me for weeks now, intermittently.
harp:~ > diff -ubB a.rb.org a.rb
--- a.rb.org 2006-03-07 07:56:07.000000000 -0700
+++ a.rb 2006-03-07 07:58:12.000000000 -0700
@@ -9,7 +9,7 @@
server = 'http://192.168.10.16/'
verbose = false
-opts.each { |o,a| p o }
+#opts.each { |o,a| p o }
opts.each { |o,a|
case o
when '--devel'
harp:~ > ruby -- a.rb --debug --devel --verbose
"http://192.168.20.56/"
true
each is destructive - as most argv parsers are.
Oh, fer cryin' out loud I'm an idiot.
hth.
Certainly did. Thanks.
···
On Wed, 8 Mar 2006, ara.t.howard@noaa.gov wrote:
On Tue, 7 Mar 2006, Matt Rose wrote:
-a
--
--------------------------------------------------------------------------
Matt Rose mattrose@folkwolf.net Visit my blog! http://folkwolf.net
He's a time-tossed coffee-fuelled vampire hunter on a search for his
missing sister. She's a hard-bitten goth traffic cop looking for love
in all the wrong places. They fight crime!