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

Reply via email to