aris
July 26, 2012, 6:59pm
1
Hi folks,
I’m trying to switch from getoptlong to optparse. I’m having a problem
grabbing a value from the command line. Here’s the code:
cat example.rb
#!/usr/bin/env ruby
require “ostruct”
require “optparse”
options = OpenStruct.new
options.date = false
option_parser = OptionParser.new do |opts|
opts.on("-d", “–date”, String, “Optional: Specify date in format
00-00-00”) do |date|
options.date = date
end
end
puts “<#{options.date}>”
If I run:
ruby example.rb -d 12-07-12
I expected the output:
<12-07-12>
instead I saw:
What am I doing wrong?
best
Jams
On Thu, Jul 26, 2012 at 6:58 PM, James H.on [email protected]
wrote:
00-00-00") do |date|
options.date = date
end
end
puts “<#{options.date}>”
This works:
#!/usr/bin/env ruby
require “ostruct”
require “optparse”
options = OpenStruct.new
options.date = false
option_parser = OptionParser.new do |opts|
opts.on(“-d”, “–date DATE”, String, “Optional: Specify date in
format 00-00-00”) do |date|
options.date = date
end
end
option_parser.parse!
puts “<#{options.date}>”
I had to add the DATE parameter in the long format specification and
also call parse!:
./test.rb -d “12-10-12”
<12-10-12>
Jesus.
Thanks! That got it!
On Thu, Jul 26, 2012 at 11:15 AM, Jess Gabriel y Galn <
On Thu, Jul 26, 2012 at 8:59 PM, James H.on [email protected]
wrote:
On Thu, Jul 26, 2012 at 11:15 AM, Jess Gabriel y Galn
[email protected] wrote:
On Thu, Jul 26, 2012 at 6:58 PM, James H.on [email protected]
option_parser = OptionParser.new do |opts|
I had to add the DATE parameter in the long format specification and
also call parse!:
You can also have OptionParser convert it directly:
$ irb19 -r optparse -r optparse/date
irb(main):001:0> OptionParser.new{|o|o.on(‘-d D’, Date){|v| p
v,v.class}}.parse %w{-d 2010-02-01}
#<Date: 2010-02-01 ((2455229j,0s,0n),+0s,2299161j)>
Date
=> []
irb(main):002:0> OptionParser.new{|o|o.on(‘-d D’, DateTime){|v| p
v,v.class}}.parse %w{-d 2010-02-01}
#<DateTime: 2010-02-01T00:00:00+00:00 ((2455229j,0s,0n),+0s,2299161j)>
DateTime
=> []
Kind regards
robert