The intersects() method returns undef when it can't decide if there is an intersection.
2008/12/13 Elliot Shank <[email protected]>: > In the code below, why do the span sets not intersect when the spans taken > from them do? > > I've tried this code on both Red Hat 5.2 and on Mac OS X 10.5. > > DateTime: 0.4501 > DateTime::SpanSet: 0.25 > DateTime::Event::Recurrence: 0.16 > > ======= > > next start 1: 2008-12-17T07:00:00 > next end 1: 2008-12-18T07:00:00 > next start 2: 2008-12-17T17:00:00 > next end 2: 2008-12-18T17:00:00 > spans intersect: yes > span sets intersect: no > > ======= > > use DateTime; > use DateTime::SpanSet; > use DateTime::Event::Recurrence; > > my $start_1 = DateTime::Event::Recurrence->weekly(days => 3, hours => 7); > my $end_1 = DateTime::Event::Recurrence->weekly(days => 4, hours => 7); > my $span_set_1 = DateTime::SpanSet->from_sets(start_set => $start_1, end_set > => $end_1); > > my $start_2 = DateTime::Event::Recurrence->weekly(days => 3, hours => 17); > my $end_2 = DateTime::Event::Recurrence->weekly(days => 4, hours => 17); > my $span_set_2 = DateTime::SpanSet->from_sets(start_set => $start_2, end_set > => $end_2); > > my $now = DateTime->now(); > > my $span_1 = $span_set_1->next($now); > my $span_2 = $span_set_2->next($now); > > say 'next start 1: ', $span_1->start(); > say 'next end 1: ', $span_1->end(); > say 'next start 2: ', $span_2->start(); > say 'next end 2: ', $span_2->end(); > > say 'spans intersect: ', $span_1->intersects($span_2) ? 'yes' : 'no'; > say 'span sets intersect: ', $span_set_1->intersects($span_set_2) ? 'yes' : > 'no'; > ... say 'span sets intersect: ', $span_set_1->intersects($span_set_2) ? 'yes' : 'no'; say 'span sets intersect is defined: ', defined $span_set_1->intersects($span_set_2) ? 'yes' : 'no'; my $span_3 = DateTime::Span->from_datetimes( start => DateTime->new(year=>2001), end => DateTime->ne w(year=>2002) ); say 'span sets intersect: ', $span_2->intersects($span_3) ? 'yes' : 'no'; say 'span sets intersect is defined: ', defined $span_2->intersects($span_3) ? 'yes' : 'no'; ... span sets intersect: no span sets intersect is defined: no span sets intersect: no span sets intersect is defined: yes this was probably a poor design decision, and it seems to be undocumented. Flávio S. Glock
