Help with generating a Datetime set using the from_datetime metho d

2004-01-08 Thread Hill, Ronald
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


Re: Help with generating a Datetime set using the from_datetime metho d

2004-01-08 Thread Flavio S. Glock
I think you are meaning something like this (untested):

 sub sunrise_sunset  {
 my $class = shift;
 my $dt = shift;
 my $self = $class-_new( @_ );
 return DateTime::Set-from_datetimes(
 dates = $self-_current_rise_set-( $dt )
);
 }

I believe a DateTime::Span would be a more useful return 
value, in this case.

- Flavio S. Glock


Hill, Ronald wrote:
 
 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