{
package DateTime::Event::Predict;
use DateTime::Event::ICal;
use strict;

sub new {
    my ($class, %params) = @_;
    my $dts = DateTime::Set->from_datetimes( dates => $params{dates} );
    for my $freq ( qw[ yearly monthly weekly daily hourly minutely
secondly ] ) {
        my $dtr = DateTime::Event::ICal->recur( freq => $freq, dtstart
=> $params{dates}[0] );
        return $dtr if $dtr->contains( $dts );
    }
    return $dts;
}

}

# SYNOPSIS

# use DateTime::Event::Predict;
use DateTime::Format::ICal;

my $dtr = DateTime::Event::Predict->new( dates => [ DateTime->today,
DateTime->today->add( months => 1 ) ] );

print DateTime::Format::ICal->format_recurrence($dtr);

# note: format_recurrence() doesn't print 'DTSTART', but the
recurrence values are correct

=head1 CREDITS

Based on an idea from Steffen Mueller <[EMAIL PROTECTED]>

=head1 COPYRIGHT

Copyright (c) 2008 Flavio Soibelmann Glock.
All rights reserved.  This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.

=cut

Reply via email to