Hi Flavio,
I'm stuck :(
I am trying to implement the changes that were discussed
recently on the list and am running into problems.
Here is what I have tried:
I have renamed the currect sunrise_sunset to
_sunrise_sunset (easy)
then I wrote a new sunrise_sunset sub to accommodate
the change request. Here is what I have:
sub sunrise_sunset {
my $class = shift;
my $self = $class->_new( @_ );
return DateTime::Set->from_datetimes(
dates => sub {
$self->_current_rise_set->($_[0]);
}
);
}
Then I wrote another sub ( _current_rise_set)
That has the following
sub _current_rise_set {
my $self = shift;
my $dt = shift;
croak( "Dates need to be DateTime objects (" . ref($dt) . ")" )
unless ( $dt->isa('DateTime') );
my ( $tmp_rise, $tmp_set ) = _sunrise( $self, $dt );
return [$tmp_rise, $tmp_set] ;
}
The idea is that I want to keep the current overall structure
of the module. In order to do this I though that all I needed to do was
to have the module return (as a set) the date of rise/set.
So the users of the module would do something like this:
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
use DateTime::Event::Sunrise:
my $dt = DateTime->new( year => 2003,
month => 12,
day => 01,
time_zone => 'America/Los_Angeles',
);
my $sun_set = DateTime::Event::Sunrise ->sunrise_sunset(
longitude =>'-118' ,
latitude => '33',
);
then to generate the DateTime Set do this
my $dt_set = $sun_set->($dt);
Well, needless to say this does not work :(
The reason is because the from_datetimes method does not
accept a coderef (only an arrayref) Even if it did
I still don't think it would work.
Is there a reason it only accepts a arrayref?
( it would be kinda cool if it did accept a coderef).
Anyway, if there is any insite you can provide it would be most
helpful.
Thanks
Ron Hill