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 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
>
>
>
>
>
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.
If you're not sure whether your input string is actually a date, you
might be more interested in Date.strptime: