DateTimeX-Fiscal-Fiscal5253
view release on metacpan or search on metacpan
lib/DateTimeX/Fiscal/Fiscal5253.pm view on Meta::CPAN
# return summary data about a calendar.
sub summary {
my $self = shift;
my %args = @_ == 1 ? ( style => shift ) : @_;
$args{style} ||= $self->{style};
croak 'Unknown parameter present' if scalar( keys(%args) ) > 1;
my $cal = &{$_valid_cal_style}( $args{style} );
my %cdata;
for (qw( style year start end weeks )) {
$cdata{$_} = $self->{"_$cal"}->{summary}->{$_};
}
return wantarray ? %cdata : \%cdata;
}
sub contains {
my $self = shift;
my %args = @_ == 1 ? ( date => shift ) : @_;
$args{date} ||= 'today';
$args{style} ||= $self->{style};
croak 'Unknown parameter present' if scalar( keys(%args) ) > 2;
lib/DateTimeX/Fiscal/Fiscal5253.pm view on Meta::CPAN
# Yes, a DT object set to "today" would work, but this is faster.
# NOTE! This will break in 2038 on 32-bit builds!
$args{date} = strftime( "%Y-%m-%d", localtime() )
if ( lc( $args{date} ) eq 'today' );
# _str2dt will croak on error
my $date = &{$_str2dt}( $args{date} )->ymd;
my $whash = $self->{"_${cal}_weeks"};
my $cdata = $self->{"_$cal"}->{summary};
# it is NOT an error if the date isn't in the calendar,
# so return undef to differentiate this from an error condition
return if $date lt $cdata->{start} || $date gt $cdata->{end};
# since the date is in the calendar, let's return it's week,
# and optionally, a structure with period and week number.
my $w;
for ( $w = 1 ; $date gt $whash->{$w}->{end} ; $w++ ) {
# this should NEVER fire!
croak 'FATAL ERROR! RAN OUT OF WEEKS' if $w > $cdata->{weeks};
}
my $p = $whash->{$w}->{period};
return wantarray ? ( period => $p, week => $w ) : $w;
}
# Utiliy routine, hidden from public use, to prevent duplicate code in
# the period attribute accessors.
my $_period_attr = sub {
my $self = shift;
( run in 0.468 second using v1.01-cache-2.11-cpan-454fe037f31 )