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?

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

require 'date'

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

a @ http://codeforpeople.com/

···

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

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

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

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

···

On 8/6/08, ara.t.howard <ara.t.howard@gmail.com> wrote:

On Aug 5, 2008, at 10:53 PM, Greg Hauptmann 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/
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama

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 8/6/08, Greg Hauptmann <greg.hauptmann.ruby@gmail.com> wrote:

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

On 8/6/08, ara.t.howard <ara.t.howard@gmail.com> wrote:
>
>
> On Aug 5, 2008, at 10:53 PM, Greg Hauptmann 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/
> --
> we can deny everything, except that we have the possibility of being
> better. simply reflect on that.
> h.h. the 14th dalai lama
>
>
>
>
>

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

Michael Guterl

···

On Wed, Aug 6, 2008 at 1:50 AM, Greg Hauptmann <greg.hauptmann.ruby@gmail.com> 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 12:50 AM, Greg Hauptmann <greg.hauptmann.ruby@gmail.com> 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

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 Aug 5, 2008, at 11:50 PM, Greg Hauptmann wrote:

umm...Date parse doesn't seem to be that good, for example see below

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama