| Date-Holidays documentation | Contained in the Date-Holidays distribution. |
Date::Holidays::Adapter::GB - an adapter class for Date::Holidays::* modules
This POD describes version 0.01 of Date::Holidays::Adapter::GB
The is the adapter class for Date::Holidays::UK.
The constructor, takes a single named argument, countrycode
The holidays method, takes 3 named arguments, year, month and day
Returns an indication of whether the day is a holiday in the calendar of the country referenced by countrycode in the call to the constructor new.
The holidays method, takes a single named argument, year
Returns a reference to a hash holding the calendar of the country referenced by countrycode in the call to the constructor new.
The calendar will spand for a year and the keys consist of month and day concatenated.
This exception is thrown when Date::Holidays::Adapter attempts to load an actual adapter implementation. This exception is recoverable to the extend that is caught and handled internally.
When caught the SUPER adapter is attempted loaded, Date::Holidays::Adapter if this however fails Date::Holidays::Exception::SuperAdapterLoad it thrown see below.
This exception is thrown when in was not possible to load either a implementation of a given adapter, or the SUPER adapter Date::Holidays::Adapter.
The exception is thrown if a country code is provided, which is not listed in Locale::Country, which lists ISO 3166 codes, which is the unique 2 character strings assigned to each country in the world.
Exception thrown in the case where the loaded and initialized module does not support the called method. (SEE: METHODS/SUBROUTINES).
Please refer to INCOMPATIBILITIES in Date::Holidays
Date::Holidays::UK does not implement the holidays methods
The actual code for United Kingdom in ISO 3166 is 'GB' (SEE Locale::Country), but the module is named Date::Holidays::UK and so it this adapter class has been named Date::Holidays::Adapter::GB in this distribution to avoid confusion, or?
Please report issues via CPAN RT:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Date-Holidays
or by sending mail to
bug-Date-Holidays@rt.cpan.org
Jonas B. Nielsen, (jonasbn) - <jonasbn@cpan.org>
Date::Holidays and related modules are (C) by Jonas B. Nielsen, (jonasbn) 2004-2007
Date::Holidays and related modules are released under the artistic license
The distribution is licensed under the Artistic License, as specified by the Artistic file in the standard perl distribution (http://www.perl.com/language/misc/Artistic.html).
| Date-Holidays documentation | Contained in the Date-Holidays distribution. |
package Date::Holidays::Adapter::GB; # $Id: GB.pm 1742 2007-02-22 19:47:55Z jonasbn $ use strict; use warnings; use vars qw($VERSION); use Locale::Country; use Error qw(:try); use base 'Date::Holidays::Adapter'; use Date::Holidays::Exception::UnsupportedMethod; use Date::Holidays::Exception::InvalidCountryCode; use Date::Holidays::Exception::NoCountrySpecified; $VERSION = '0.01'; sub holidays { throw Date::Holidays::Exception::UnsupportedMethod('is_holiday'); return; } sub is_holiday { my ($self, %params) = @_; my $sub = $self->{_adaptee}->can('is_uk_holiday'); return &{$sub}($params{'year'}, $params{'month'}, $params{'day'}); } sub _fetch { my ( $self, $params ) = @_; if ( !$self->{_countrycode} ) { throw Date::Holidays::Exception::NoCountrySpecified("No country code specified"); } #Alas, there is no country code named uk in ISO 3166 if ( $params->{countrycode} eq 'uk' ) { $params->{countrycode} = 'gb'; } my $module; if ( $params->{countrycode} eq 'gb' ) { $module = 'Date::Holidays::UK'; } if ( !$params->{nocheck} ) { if ( !code2country($self->{_countrycode}) ) { #from Locale::Country throw Date::Holidays::Exception::InvalidCountryCode("$self->{_countrycode} is not a valid country code"); } } try { $self->_load($module); } catch Date::Holidays::Exception::AdapterLoad with { my $E = shift; $E->throw; }; return $module; } 1; __END__