DateTime-Event-WarwickUniversity

 view release on metacpan or  search on metacpan

META.yml  view on Meta::CPAN

---
name: DateTime-Event-WarwickUniversity
version: 0.05
author:
  - 'Tim Retout <tim@retout.co.uk>'
abstract: Warwick University academic calendar events
license: perl
resources:
  license: http://dev.perl.org/licenses/
requires:
  DateTime: 0
  perl: 5.8.4
build_requires:
  Test::Exception: 0
  Test::More: 0
  Test::Pod: 0

README  view on Meta::CPAN

DateTime-Event-WarwickUniversity
================================

DateTime::Event::WarwickUniversity is used for calculating various
important calendar dates used at the University of Warwick.

INSTALLATION

To install this module type the following:

   perl Build.PL
   ./Build
   ./Build test
   ./Build install

lib/DateTime/Event/WarwickUniversity.pm  view on Meta::CPAN

package DateTime::Event::WarwickUniversity;

=head1 NAME

DateTime::Event::WarwickUniversity - Warwick University academic calendar events

=head1 SYNOPSIS

  use DateTime::Event::WarwickUniversity;

  my $dt = DateTime->new(day => 7, month => 5, year => 2005);

  # 2005-09-26
  my $dt_gr = DateTime::Event::Warwick->new_year_for_gregorian_year($dt);

  # 2004-09-28
  my $dt_ac = DateTime::Event::Warwick->new_year_for_academic_year($dt);

=head1 DESCRIPTION

DateTime::Event::WarwickUniversity is used to work with the academic calendar
of the University of Warwick.

=cut

use 5.008004;
use strict;
use warnings;
use Carp;
use Scalar::Util qw/blessed/;

our $VERSION = '0.05';

# http://web.archive.org/web/19980114233111/warwick.ac.uk/info/dates.html
# http://web.archive.org/web/20001101110549/www.warwick.ac.uk/info/calendar/section1/1.01.html
# http://www2.warwick.ac.uk/insite/info/gov/calendar/section1/termdates/
# http://www2.warwick.ac.uk/services/gov/calendar/section1/termdates

my %new_year = (
	1996 => ['09', '30'],
	1997 => ['09', '29'],
	1998 => ['10', '05'],
	1999 => ['10', '04'],
	2000 => ['10', '02'],
	2001 => ['10', '01'],
	2002 => ['09', '30'],
	2003 => ['09', '29'],

lib/DateTime/Event/WarwickUniversity.pm  view on Meta::CPAN

my $min_year = 1996;
my $max_year = 2017;

=head1 METHODS

=head2 new_year_for_gregorian_year

Takes as argument a single L<DateTime> object.

Returns a L<DateTime> object representing the first day of the academic
calendar that begins in the same Gregorian year as the input.

=cut

sub new_year_for_gregorian_year {
	my ($class, $dt) = @_;

	croak("Input must be DateTime object")
		unless ( defined($dt) && blessed($dt) && $dt->isa('DateTime') );

	my $dt_new_year = _new_year_dt_from_gregorian_year($dt->year);

lib/DateTime/Event/WarwickUniversity.pm  view on Meta::CPAN

		$dt_new_year = _new_year_dt_from_gregorian_year($clone->year - 1);
		$dt_dur = $dt_new_year->subtract_datetime_absolute( $clone );
	}

	return $clone->add_duration( $dt_dur )->set_time_zone($user_tz);
}

# _new_year_dt_from_gregorian_year
#
# Not part of public API. Takes a string containing a year, and returns a
# DateTime object representing the first day of the academic calendar that
# began in that Gregorian year.

sub _new_year_dt_from_gregorian_year {
	my $year = shift;

	croak("Input outside supported range.")
		if ( $year < $min_year || $year > $max_year );

	my $date = $new_year{$year};



( run in 0.434 second using v1.01-cache-2.11-cpan-5dc5da66d9d )