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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs