Wow, yeah, I didn't think about dates. Yeah, it gets weird in Ruby, because
Float::INFINITY is a *numeric* infinity by nature, so it would feel weird
for it to work with dates. Thanks for the explanation!

On Thu, Jul 2, 2015 at 6:50 PM Jeremy Evans <[email protected]> wrote:

> On Thursday, July 2, 2015 at 4:17:12 AM UTC-7, Janko Marohnić wrote:
>>
>> Jeremy, what do you mean by "unbounded ranges are not supported by Ruby"?
>> Because you can create these objects, and still obtain the #begin/#end
>> information. It would be cool if Sequel could detect a Ruby infinity and
>> make an unbounded range on that end, would that be doable?
>>
>
> I mean that you cannot create a ruby Range object that is unbounded on
> either end.  You can sort of get it to work for numeric ranges by using
> Float::INFINITY, but it doesn't work for time ranges or date ranges with
> unbounded beginnings:
>
> (Date.today..Float::INFINITY) # works
> ((-Float::INFINITY)..(Date.today)) # ArgumentError: bad value for range
> (Date.today..(Date::Infinity)) # ArgumentError: bad value for range
> (Date::Infinity...(Date.today)) # ArgumentError: bad value for range
> (Time.now..Float::INFINITY) # ArgumentError: bad value for range
> ((-Float::INFINITY)...(Time.now)) # ArgumentError: bad value for range
>
> While I could change Sequel to some of these unbounded range types with
> ruby ranges, it would then have inconsistent behavior for the various range
> types, and nobody has asked for native unbounded range support for numeric
> ranges (most range usage in PostgreSQL seems to deal with dates and times).
>
> I think the best solution here would be to send a patch to ruby to add
> support for infinite date/time objects.  Because of how ruby ranges work,
> you need behavior such that Date.today <=> infinite_object and Time.now <=>
> infinite_object do not return nil.  However, you'd also need to figure out
> correct behavior for places where the infinity object could be used in
> place of a Date or Time instance.
>
> Thanks,
> Jeremy
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "sequel-talk" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sequel-talk/oyJUn9Gi79w/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sequel-talk.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to