Is there a way to AutoParse a string to another type - e.g. if a Date format then date, else if inte

Hi,

Is there a way to AutoParse a string to another type - e.g. if a Date
format
then date, else if integer than Integer etc

I’m wanting to pass search parameters via a URL, however since
everything in
the URL will be a string it would be good to automatically convert a
string
to the most likely variable type. In particular differentiating between
an
Integer and a Date.

Does this exist somewhere in Ruby already? Or do I have to write
myself?

Thanks in advance

On Aug 5, 2008, at 10:53 PM, Greg H. wrote:

Does this exist somewhere in Ruby already? Or do I have to write
myself?

require ‘date’

value = Date.parse(string) rescue Integer(string)

a @ http://codeforpeople.com/

thanks - in one line too…so I could do in fact then I guess:

  value = Date.parse(string) rescue Integer(string) rescue 

Float(string)
rescue string

umm…Date parse doesn’t seem to be that good, for example see below

Loading development environment (Rails 2.1.0)

?> Date.parse(“123”, “%d/%m/%Y”)
=> Fri, 02 May 2008

Date.parse(“123”, “%d/%m/%Y”).class
=> Date

On Aug 5, 2008, at 11:50 PM, Greg H. wrote:

umm…Date parse doesn’t seem to be that good, for example see below

yup - you may have to constrain what you parse with a pattern. you
might also try Time.parse as it’s a little more strict.

a @ http://codeforpeople.com/

On Wed, Aug 6, 2008 at 12:50 AM, Greg H.
[email protected] wrote:

umm…Date parse doesn’t seem to be that good, for example see below

Loading development environment (Rails 2.1.0)

?> Date.parse(“123”, “%d/%m/%Y”)
=> Fri, 02 May 2008

Date.parse(“123”, “%d/%m/%Y”).class
=> Date

As far as I can tell, Date.parse doesn’t really want a format string
as the second argument. And Date.parse is working great in your
example, it gave you a date corresponding to the 123rd day of this
year. :slight_smile:

If you’re not sure whether your input string is actually a date, you
might be more interested in Date.strptime:

irb(main):012:0> value = Date.strptime(“123”, “%d/%m/%y”) rescue
Integer(“123”)
=> 123
irb(main):013:0> value.class
=> Fixnum

-Michael

On Wed, Aug 6, 2008 at 1:50 AM, Greg H.
[email protected] wrote:

umm…Date parse doesn’t seem to be that good, for example see below

Loading development environment (Rails 2.1.0)

?> Date.parse(“123”, “%d/%m/%Y”)
=> Fri, 02 May 2008

Date.parse(“123”, “%d/%m/%Y”).class
=> Date

FWIW, it is assuming you want the 123rd day of the year.

Michael G.