Mojar::Cron::Holiday - Cache for the holidays
my $national = Mojar::Cron::Holiday->new(holidays => { '2014-12-24' => 1, '2014-12-25' => 1, '2015-01-01' => 1, }); say 'Yippee!' if $national->holiday('2014-12-25'); my $regional = Mojar::Cron::Holiday->new(holidays => { '2014-12-25' => 0, # We work Christmas Day '2014-12-26' => 1 # but get Boxing Day in lieu }); $regional->linked($national); # regional is an overlay on national say 'Booo!' unless $regional->holiday('2014-12-25'); say 'Phew!' if $regional->holiday('2014-12-24') and $regional->holiday('2014-12-26');
$calendar->holidays({'2016-01-01' => 1});
A hashref holding the underlying holiday list. A false value against a date indicates it is not a holiday; useful when overriding a linked calendar.
It is equally convenient to set the holiday list using the holidays attribute (with a hashref) or the holiday method (with an arrayref); choose whichever you find more readable within your code.
$regional->linked($national); say 'National holiday' if $regional->linked->holiday('2016-01-04');
The linked attribute may hold another holiday object, to which queries are passed whenever the current object has no opinion. Thus a tree of holiday nodes can be built. The root of the tree might be national public holidays; below that might be corporate holidays for the boss's birthday and when the warehouse shuts for stocktaking; and below that might be a node for the annual leave of each employee. Commonly the tree is simpler: a node for project 'down' days, linking to a node for public holidays.
$calendar->holiday('2016-01-04' => 1); $calendar->holiday(['2016-03-25', '2016-03-28'] => 0); say 'Bye!' if $calendar->holiday; say 'Discard the milk' if $calendar->holiday($yesterday);
A getter and setter for whether this calendar flags the date(s) as holiday. The date can be either a scalar (string) or an arrayref of such scalars. If no date is given, the current date is used.
When used as a setter, the second argument is a boolean. For base or standalone calendars, only positive results need be assigned; negatives are assigned when you want to override a possible linked result.
$anticipated = $calendar->next_holiday('2016-02-01');
Returns the next holiday on or following the given date. If no date is given, the current date is used.
I need a small web service so that various apps can forecast when staff will be in better moods. The prime example is a gantt editor, which relies on holiday information for forecasting when there is a glimmer of hope of work being done.
Copyright (C) 2014, Nic Sandfield.
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
To install Mojar::Cron, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojar::Cron
CPAN shell
perl -MCPAN -e shell install Mojar::Cron
For more information on module installation, please visit the detailed CPAN module installation guide.