Date-Holidays-PL
view release on metacpan or search on metacpan
lib/Date/Holidays/PL.pm view on Meta::CPAN
(
map {
$_ => {
%SharedHolidays,
map { $_ => 1 } qw( 0106 0722 0815 )
}
} (1951 .. 1959),
),
(
map {
$_ => {
%SharedHolidays,
map { $_ => 1 } qw( 0722 )
}
} (1960 .. 1988),
),
1989 => {
%SharedHolidays,
map { $_ => 1 } qw( 0722 0815 1111 )
},
# since 1990
1990 => {
%SharedHolidays,
map { $_ => 1 } qw( 0503 0815 1111 )
},
# since 2011
'CURRENT' => {
%SharedHolidays,
map { $_ => 1 } qw( 0106 0503 0815 1111 )
},
);
# always on those dates
my %FixedHolidays = (
# New Year's Day
'0101' => 'Nowy Rok',
# Epiphany (1951-1959 only)
'0106' => 'Trzech Króli',
# Labor Day
'0501' => 'ÅwiÄto PaÅstwowe',
# Constitution Day ( since 1990 )
'0503' => 'ÅwiÄto Narodowe Trzeciego Maja',
# Polish Committee of National Liberation Manifesto (1951-1989 only)
'0722' => 'ÅwiÄto Odrodzenia Polski',
# Assumption of the Blessed Virgin Mary ( 1951-1959, 1989+ )
'0815' => 'WniebowziÄcie NajÅwiÄtszej Maryi Panny',
# All Saints' Day
'1101' => 'Wszystkich ÅwiÄtych',
# Independence Day ( since 1989 )
'1111' => 'Narodowe ÅwiÄto NiepodlegÅoÅci',
# Christmas Day
'1225' => 'pierwszy dzieŠBożego Narodzenia',
# Boxing Day
'1226' => 'drugi dzieŠBożego Narodzenia',
);
# Params::Validate config
my $ValidateOpts = {
year => {
type => SCALAR,
regex => qr/^\d{4}$/,
callbacks => {
'between 1951 and 9999' => sub {
shift >= 1951
},
},
},
month => {
type => SCALAR,
},
day => {
type => SCALAR,
},
WEEKENDS => {
type => BOOLEAN,
default => 1,
optional => 1,
}
};
sub pl_holidays {
my ($year) = validate_pos(@{[shift]},
$ValidateOpts->{year},
);
my %args = validate(@_,
{
WEEKENDS => $ValidateOpts->{WEEKENDS},
}
);
my $y = exists $ChangesByYear{$year} ? $year : 'CURRENT';
my $holidays = {
_compute_movablefeasts_for_year( $year ),
map {
$_ => $FixedHolidays{$_}
} keys %{ $ChangesByYear{$y} },
};
unless ( $args{WEEKENDS} ) {
my @weekend_holidays = grep {
my ($m, $d) = unpack "A2A2", $_;
my $dt = DateTime->new(
year => $year,
month => $m,
day => $d
);
$dt->day_of_week >= 6;
} keys %$holidays;
delete @{$holidays}{ @weekend_holidays };
}
return $holidays;
};
sub pl_holidays_dt {
my $year = shift;
( run in 2.507 seconds using v1.01-cache-2.11-cpan-5735350b133 )