Date-Calc
view release on metacpan or search on metacpan
lib/Date/Calendar/Year.pm view on Meta::CPAN
{
if (defined wantarray and wantarray)
{
return
(
Day_of_Week_to_Text(Day_of_Week(@date)),
keys(%{$self->{'TAGS'}{$index}})
);
}
else
{
return 1 + scalar( keys(%{$self->{'TAGS'}{$index}}) );
}
}
else
{
if (defined wantarray and wantarray)
{
return( Day_of_Week_to_Text(Day_of_Week(@date)) );
}
else
{
return 1;
}
}
}
else
{
local($_);
%result = ();
foreach $index (keys %{$self->{'TAGS'}})
{
grep( $result{$_} = 0, keys(%{$self->{'TAGS'}{$index}}) );
}
if (defined wantarray and wantarray)
{
return( keys %result );
}
else
{
return scalar( keys %result );
}
}
}
sub search
{
my($self,$pattern) = @_;
my($index,$label,$upper);
my(@result);
local($_);
@result = ();
$pattern = ISO_UC($pattern);
foreach $index (keys %{$self->{'TAGS'}})
{
LABEL:
foreach $label (keys %{$self->{'TAGS'}{$index}})
{
$upper = ISO_UC($label);
if (index($upper,$pattern) >= $[)
{
push( @result, $index );
last LABEL;
}
}
}
return( map( $self->index2date($_), sort {$a<=>$b} @result ) );
}
sub tags
{
my($self) = shift;
my(%result) = ();
my($index);
my(@date);
if (@_ == 1 and not ref($_[0]))
{
$index = shift;
}
else
{
@date = shift_date(\@_);
$index = $self->date2index(@date);
}
if (exists $self->{'TAGS'}{$index} and
defined $self->{'TAGS'}{$index})
{
%result = %{$self->{'TAGS'}{$index}};
}
return \%result;
}
sub _interval_workdays_
{
my($self,$lower,$upper) = @_;
my($work,$full,$half,$days);
$work = ${$self}{'WORK'};
$full = ${$self}{'FULL'};
$half = ${$self}{'HALF'};
$work->Empty();
$work->Interval_Fill($lower,$upper);
$work->AndNot($work,$full);
$days = $work->Norm();
$work->And($work,$half);
$days -= $work->Norm() * 0.5;
return $days;
}
sub _delta_workdays_
{
my($self,$lower_index,$upper_index,$include_lower,$include_upper) = @_;
my($days);
$days = ${$self}{'DAYS'};
if (($lower_index < 0) || ($lower_index >= $days))
{
croak("invalid lower index ($lower_index)");
}
( run in 2.342 seconds using v1.01-cache-2.11-cpan-bbc515a03b3 )