Changes for DateTime::Set 0.3900 2016-10-09 - require Params::Validate 0.3800 2016-05-23 - doc patch, by Lucas Kanashiro. 0.3700 2016-05-17 - end() / max() and start() / min() are aliases to the same method in all classes. Added docs and tests. Reported by Vincent Berger. 0.3600 2015-11-11 - move t/22intersects.t to DT::Event::Recurrence module 0.3500 2015-11-10 - [rt.cpan.org #108633] Recurrent event does not intersect indefinite future, test contributed by Brett Watson. - documentation - intersects() returns 0 for false, and 'undef' for undecidable. 0.3400 2014-02-12 - documentation and packaging fixes - by David Steinbrunner. - version number using 4 digits - requested by David Marshall. 0.33 2013-09-15 - bugfix in SpanSet->grep. Reported by Andreas Isberg 0.32 2013-08-27 - ignore duration signal in DateTime::Span->from_datetime_and_duration() and use the 'end'/'start' parameters as a cue for the time direction, suggested by David Pottage - more tests of intersections with open/closed ended spans 0.30 2011-04-11 - new test file t/21from_recurrence.t Contributed by Olivier Mengue 0.29 2011-04-01 - new method is_empty_set - bug #50750 0.28 2009-07-19 - optimized DateTime::Set->as_list(). This works around a segfault reported by Nils Grunwald. 0.27 2009-04-02 - fixed DateTime::Spanset duration() method. Reported by Anton Berezin <tobez@tobez.org> 0.26 2008-12-25 - fixed DateTime::Spanset current() and set_time_zone() methods. Report and tests by Elliot Shank. 0.25 2005-10-05 - t/15time_zone.t does it's own time zone "add_duration" handling 0.24 2005-10-03 - _recurrence.pm warned when the recurrence didn't have occurrences before a given start date. Reported by Mark D. Anderson. 0.23 2005-10-03 - _recurrence.pm died when the recurrence didn't have occurrences before a given start date. Reported by Mark D. Anderson. 0.22 2005-05-06 - DateTime::Set 0.21 dies when as_list is asked to produce a list from outside the range of the set. Patch contributed by Stephen Gowing. 0.21 2005-04-06 - no hard limit in count() and as_list(); removed the warnings from the docs. 0.20 2005-02-28 - changed tests to use en_US instead of pt_BR (which changes every year) by Dave Rolsky. - optimized SpanSet methods for special cases: start_set() end_set() contains( $dt ) intersects( $dt ) - added an example to count(), by David Nicol. - added a note about how the result of min()/max() is just a copy of the actual set boundary. Reported by Ron Hill. 0.19 2004-11-29 - added more comments on as_list() and count() behaviour on large sets. Reported by Rick Frankel (rt ticket 8611) 0.18 2004-11-25 - ignore "__DIE__" signal while calculating durations. Reported by michelle.agnew (rt ticket 5434) 0.17 2004-08-17 - bugfix: it was trying to set the time zone of an "undef" value; this has broken some DT::Event::Recurrence tests - reported by Bill Moseley 0.1603 2004-07-05 - revised documentation, some examples were rewritten. - deprecate "iterate" method - Build.PM requires Set::Infinite 0.59 - reported by Tim Muller-Seydlitz 0.1602 2004-07-02 - fixed time zone handling in the methods: set_time_zone next/previous/closest/current - removed limitation of duration size in methods: add/add_duration subtract/subtract_duration - requires Set::Infinite 0.59 - uses iterate() experimental argument "backtrack_callback" - the following methods are now mutators: set_time_zone( $tz ) set( locale => $locale ) add( unit => $n ) add_duration( $dur ) subtract( unit => $n ) subtract_duration( $dur ) - fixed max/min of an infinite SpanSet - added test for infinite duration - from_recurrence() code cleanup - parameter checking: The 'dates' argument to from_datetimes() must be a list of DateTime objects 0.1601 2004-03-30 - more parameter checking; Sets should interoperate better with objects of type DateTime::Event::* and DateTime::Incomplete 0.16 2004-03-29 - Makefile.PL skips processing of "Build.PL" Reported by Reinhold May 0.15 2004-03-28 [ ENHANCEMENTS from version 0.14 ] - Both "Makefile.PL" and "Build.PL" are provided. - New methods: DateTime::SpanSet::current DateTime::Spanset::closest DateTime::Set::map / grep DateTime::SpanSet::map / grep DateTime::SpanSet::intersected_spans DateTime::SpanSet::start_set / end_set - Recurrences can be bounded sets. - Recurrences can be as small as 1 nanosecond. - DateTime::SpanSet::duration may return an 'infinite' DateTime::Duration (instead of scalar infinity). [ *** BACKWARDS INCOMPATIBILITIES from version 0.14 *** ] - The next/previous functions used in DT::Set->from_recurrence() MUST work with DateTime::Infinite::Future and DateTime::Infinite::Past parameters. Failing to test for "infinity" values is known to cause an infinite loop in some modules. - DateTime::Set and DateTime::SpanSet methods do not mutate the set. This was the behaviour in version 0.13 0.1413 2004-03-28 - detect_bounded => 1 is deprecated. 0.1412 2004-03-28 - DateTime::Set->from_recurrence - Bounded recurrences are "optional". use " detect_bounded => 1 " to turn them on. This fixes the backwards incompatibilities created by version 0.1402. 0.1411 2004-03-27 - Makefile.PL. Suggested by Randal L. Schwartz. 0.1410 2004-03-26 - Build.PL 0.1409 2004-03-23 - evaluation of bounded recurrences is "lazier". (DateTime::Incomplete tests are twice as fast) 0.1408 2004-03-22 - refactored S::I::_recurrence class: it doesn't use "current" anymore; small bugfixes & optimizations. ("current" was not documented in DT::Set) - new test: t/17quantize.t Tests a method to make "quantization" (or "discretization") of spansets. 0.1407 2004-03-16 - New methods: DateTime::SpanSet::current DateTime::Spanset::closest - "Fixed" DateTime::SpanSet::next / previous no longer "split" the returned spans. - Added examples and parameter validation to map / grep - DateTime::SpanSet::duration may return an 'infinite' DateTime::Duration, instead of scalar infinity. - Bugfix: DateTime::Spanset::union / intersection / ... correctly accept DateTime parameters. 0.1406 2004-03-15 - New methods: DateTime::Set::map / grep DateTime::SpanSet::map / grep From a discussion with Andrew Pimlott and Dave Rolsky - Cleanup "datetime" code from _recurrence.pm - iterate() marked as "internal" 0.1405 2004-03-15 - New method: DateTime::SpanSet::intersected_spans Suggested by Reinhold May Name suggested by Dave Rolsky 0.1404 2004-03-14 - New methods: DateTime::SpanSet::start_set / end_set These are the inverse of the "from_sets" method. Suggested by Reinhold May 0.1403 2004-03-10 - new method DateTime::SpanSet::iterate [ *** BACKWARDS INCOMPATIBILITIES *** ] - DateTime::Set and DateTime::SpanSet methods do not mutate the set. This is the behaviour we had before version 0.13 0.1402 2004-03-08 - Recurrence functions can be used to generate bounded sets. See: t/16bounded_recurrence.t - There is no limit on how small a recurrence can be. Recurrences as small as 1 nanosecond are possible. [ *** BACKWARDS INCOMPATIBILITIES *** ] All modules that create their own recurrences must now be able to respond to DateTime::Infinite::Future and DateTime::Infinite::Past parameters. The easiest way to do this is to add this to the first line of the recurrence subroutines: next => sub { return $_[0] if $_[0]->is_infinite; ... } previous => sub { return $_[0] if $_[0]->is_infinite; ... } 0.1401 2003-11-06 - span() was returning the set, instead of the result. 0.14 2003-11-02 - duration() should not set $@ for sets with infinity duration. Reported by Dan Kubb. 0.13 0.1205 2003-10-16 - requires Set::Infinite 0.54 (it is the "published" version of 0.5307) - DateTime::Set add_duration mutates the set. This is more compatible with the way the DateTime.pm API works. - new DateTime::SpanSet methods: as_list( $span_spec ), next( $dt|$span ), previous( $dt|$span ) 0.1204 2003-10-10 - DateTime::SpanSet and DateTime::Span inherit DateTime::Set $VERSION - Trying to subtract infinity from a datetime is not fatal in duration() Bug report by Dan Kubb. - new method 'iterate' - requires Set::Infinite 0.5307 (pass new backtracking tests) - added more tests for add_duration, subtract_duration - added set( locale => .. ) to DateTime::Set 0.1203 2003-09-26 - Added docs to Set::Infinite::_recurrence; split into a separate file such that it doesn't mix the pods - refactored union / intersection - _is_recurrence test prevents error when programming subroutine methods 0.1202 2003-09-24 - fixed set_time_zone and add_duration: was not clearing 'next' upon return, when arg was a recurrence. 0.1201 2003-09-24 - optimized contains() and intersects() when arg is a datetime - recurrence constructor always adds '->clone' to recurrence function - refactored _recurrence method; first/last of recurrences are calculated 'on demand' - requires Set::Infinite 0.5305 0.12 2003-09-22 - implement previous() in DT::SpanSet.pm - Fixed: set_time_zone would mutate a clone. 0.11 2003-09-19 - Fixed callback return value on set_time_zone. This caused the start date to be equal to the end date. Bug found by Dan Kubb. 0.10 2003-09-02 - DateTime::Span->duration now uses the new subtract_datetime_absolute method, which means that the duration is always given in seconds. - supports _huge_ recurrence sets (not infinite) with "virtual" elements. these sets have 'undef' count. Experimental - mostly untested ! this adds support for sets like 'all seconds in 2003' - faster recurrence intersection - count returns 'undef' for infinite sets. 0.09 2003-08-18 - added DT::Set count() - fixed DT::SpanSet duration() - methods that accepted a DT object, now accept a list of DT objects. Suggested by Ben Bennet, I think. - added _callback_next - "previous-only recurrences" - optimizes intersection of recurrence with span - internal 'S::I' recurrence class - small fix in DT::Set clone() - DateTime::Set uses DateTime infinity constants; max and min now return DateTime::Infinite::Future/Past objects. - DateTime::Span uses DateTime infinity constants; max and min now return DateTime::Infinite::Future/Past objects. Docs update to explain 'max()' value when a span is built using 'before'. - added method set_time_zone() - clone() is documented 0.08 2003-05-30 - recurrence set intersection uses 'current' - fixed a number of methods in DateTime::Span, including intersection, intersects, contains, union, and complement, all of which called the non-existent DateTime::Set->new method. Dave Rolsky. 0.07 2003-05-23 - some tweaking on intersection, union, and in the recurrence generator. - more tests 0.06 2003-05-14 - added 'use warnings' in some tests, added DateTime 0.12 prereq. 0.04 2003-05-12 - change "closest" code to avoid duration comparison 0.03 2003-04-27 - fixes in Set.pm as_list, span. - iterator accepts 'span' parameters. Ben Bennett - remove deprecated DateTime::Set->new and DateTime::SpanSet->new. Dave Rolsky - requires Set::Infinite 0.49 0.02 2003-04-20 - removed some calls to 'new' - added many methods from DT::Event::Recurrence - add 'span' parameter to as_list - from_recurrence now accepts next + previous 0.01 2003-04-19 - first "official" release. - implemented DateTime::SpanSet->from_sets and DateTime::SpanSet->from_set_and_duration - Many doc tweaks. Dave Rolsky - DateTime::Span->duration and DateTime::SpanSet->duration now return infinity instead of undef for infinite spans. Dave Rolsky - Added DateTime::SpanSet->empty_set. Dave Rolsky 0.00_20 2003-04-10 - Docs for DateTime::SpanSet API (not implemented) - DateTime::Span API: from_datetime_and_duration, from_datetimes 0.00_18 2003-03-25 - changes docs, changed API from_recurrence, from_datetimes, new() - as_list - previous() method (quite untested) - small API changes - revised docs, from Dave Rolsky - small bugfix in creating open spans - added DateTime::Span and DateTime::SpanSet - put "..." to mark where we need more docs - DateTime::Set and DateTime::Span API look ok. 0.00_13 2003-03-19 - added tests for set operations with recurrences/add - iterator passes all tests - the API is complete, as described in SYNOPSIS - small fix in add() syntax; accepts a duration=> parameter - iterator, next 0.00_10 2003-03-14 - union, intersection - experimental code to generate recurrence from a simple callback 0.00_07 2003-02-28 - added experimental method create_recurrence() - added experimental method add_duration() - improved SYNOPSIS - added 'immutability' tests - new() will not try to clone non-DateTime parameters (such as the Infinity value) - The program will die with an error message, if one tries to use offset() or quantize() methods These methods might come back in a later version. - new() clones its parameters. This means the parameters don't have to be immutable - new() will give an error message if we try to use a scalar parameter instead of a DateTime - Uses Set::Infinite as base class, instead of Date::Set::Timezone This means some methods just disappeared, like event() and exclude(). RFC2445 support might come back in a later revision. - Removed experimental Autoload code - Added 'Changes' and 'README' - moved POD to end of source file.