]> git.donarmstrong.com Git - deb_pkgs/libhtml-calendarmonth-perl.git/blobdiff - lib/HTML/CalendarMonth/DateTool/DateManip.pm
New upstream release
[deb_pkgs/libhtml-calendarmonth-perl.git] / lib / HTML / CalendarMonth / DateTool / DateManip.pm
index 3ed893c1163ad0705e4803e8ae56eff7a7eac6d0..d13283a7c4552ed945f837895ae243c4c384d1c0 100644 (file)
@@ -1,32 +1,35 @@
 package HTML::CalendarMonth::DateTool::DateManip;
+BEGIN {
+  $HTML::CalendarMonth::DateTool::DateManip::VERSION = '1.25';
+}
 
 # Interface to Date::Manip
 
 use strict;
+use warnings;
 use Carp;
 
-use vars qw(@ISA $VERSION);
-
-@ISA = qw(HTML::CalendarMonth::DateTool);
-
-$VERSION = '0.02';
+use base qw( HTML::CalendarMonth::DateTool );
 
-use Date::Manip qw(Date_DaysInMonth Date_DayOfWeek DateCalc
-                   UnixDate Date_SecsSince1970);
+use Date::Manip qw(
+  Date_DaysInMonth
+  Date_DayOfWeek
+  DateCalc
+  UnixDate
+  Date_SecsSince1970
+  ParseDateDelta
+);
 
 sub dow1st_and_lastday {
   my($self, $month, $year) = @_;
   $month ||= $self->month;
   $year  ||= $self->year;
-  my $lastday = Date_DaysInMonth($month, $year);
-  # Date::Manip uses 1 for Monday, 7 for Sunday as well.
-  my $dow1st = $self->dow(1);
-  ($dow1st, $lastday);
+  ($self->dow(1), Date_DaysInMonth($month, $year));
 }
 
 sub day_epoch {
   my($self, $day, $month, $year) = @_;
-  $day || croak "Day required.\n";
+  $day || croak "day required.\n";
   $month ||= $self->month;
   $year  ||= $self->year;
   Date_SecsSince1970($month, $day, $year, 0, 0, 0);
@@ -34,25 +37,24 @@ sub day_epoch {
 
 sub dow {
   # Date::Manip uses 1..7 as indicies in the week, starting with Monday.
-  # Internally, we use 0..6, starting with Sunday. These turn out to be
-  # identical except for Sunday.
+  # Convert to 0..6 starting with Sunday.
   my($self, $day, $month, $year) = @_;
-  $day || croak "Day required.\n";
+  $day   || croak "day required.\n";
   $month ||= $self->month;
   $year  ||= $self->year;
-  my $dow = Date_DayOfWeek($month, $day, $year);
-  $dow = 0 if $dow == 7;
-  $dow;
+  Date_DayOfWeek($month, $day, $year) % 7;
 }
 
 sub add_days {
   my($self, $delta, $day, $month, $year) = @_;
-  defined $delta || croak "Delta (in days) required.\n";
-  $day   || croak "Day required.\n";
+  defined $delta || croak "delta (in days) required.\n";
+  $day   || croak "day required.\n";
   $month ||= $self->month;
   $year  ||= $self->year;
-  my $date = DateCalc(sprintf("%04d%02d%02d", $year, $month, $day),
-                      ($delta < 0 ? '':'+')." $delta days");
+  my $date = DateCalc(
+    sprintf("%04d%02d%02d", $year, $month, $day),
+    "$delta days"
+  );
   my($y, $m, $d) = $date =~ /^(\d{4})(\d\d)(\d\d)/;
   $_ += 0 foreach ($y, $m, $d);
   ($d, $m, $y);
@@ -60,7 +62,7 @@ sub add_days {
 
 sub week_of_year {
   my($self, $day, $month, $year) = @_;
-  $day || croak "Day required.\n";
+  $day   || croak "day required.\n";
   $month ||= $self->month;
   $year  ||= $self->year;
   my $week = UnixDate(sprintf("%04d%02d%02d", $year, $month, $day), '%U');