Optparse problem grabbing a value

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