Date-Manip

 view release on metacpan or  search on metacpan

lib/Date/Manip/Recur.pm  view on Meta::CPAN

         if ($num == 0  ||  $num > 5  ||  $num < -5) {
            $$self{'err'} = "[frequency] Week of month must be 1-5 or -1 to -5";
            return 1;
         }

      }

   } elsif ($type eq 'd') {
      if ($vtype eq 'dow') {
         if ($num < 1  ||  $num > 7) {
            $$self{'err'} = "[frequency] Day of week must be 1-7";
            return 1;
         }

      } elsif ($vtype eq 'dom') {
         if ($num == 0  ||  $num > 31  ||  $num < -31) {
            $$self{'err'} = "[frequency] Day of month must be 1-31 or -1 to -31";
            return 1;
         }

      } elsif ($vtype eq 'doy') {
         if ($num == 0  ||  $num > 366  ||  $num < -366) {
            $$self{'err'} = "[frequency] Day of year must be 1-366 or -1 to -366";
            return 1;
         }
      }

   } elsif ($type eq 'h') {
      if ($vtype eq 'time') {
         if ($num < 0  ||  $num > 23) {
            $$self{'err'} = "[frequency] Hour must be 0-23";
            return 1;
         }
      }

   } else {
      if ($vtype eq 'time') {
         if ($num < 0  ||  $num > 59) {
            $$self{'err'} = "[frequency] Minute/second must be 0-59";
            return 1;
         }
      }
   }

   return 0;
}

sub _parse_lang {
   my($self,$string) = @_;
   my $dmt           = $$self{'tz'};
   my $dmb           = $$dmt{'base'};

   # Test the regular expression

   my $rx = $self->_rx('every');

   return 1  if ($string !~ $rx);
   my($month,$week,$day,$last,$nth,$day_name,$day_abb,$mon_name,$mon_abb,$n,$y) =
     @+{qw(month week day last nth day_name day_abb mon_name mon_abb n y)};

   # Convert wordlist values to calendar values

   my $dow;
   if (defined($day_name) || defined($day_abb)) {
      if (defined($day_name)) {
         $dow = $$dmb{'data'}{'wordmatch'}{'day_name'}{lc($day_name)};
      } else {
         $dow = $$dmb{'data'}{'wordmatch'}{'day_abb'}{lc($day_abb)};
      }
   }

   my $mmm;
   if (defined($mon_name) || defined($mon_abb)) {
      if (defined($mon_name)) {
         $mmm = $$dmb{'data'}{'wordmatch'}{'month_name'}{lc($mon_name)};
      } else {
         $mmm = $$dmb{'data'}{'wordmatch'}{'month_abb'}{lc($mon_abb)};
      }
   }

   if (defined($nth)) {
      $nth = $$dmb{'data'}{'wordmatch'}{'nth'}{lc($nth)};
   }

   # Get the frequencies

   my($freq);
   if (defined($dow)) {
      if (defined($mmm)) {
         if (defined($last)) {
            # last DoW in MMM [YY]
            $freq = "1*$mmm:-1:$dow:0:0:0";

         } elsif (defined($nth)) {
            # Nth DoW in MMM [YY]
            $freq = "1*$mmm:$nth:$dow:0:0:0";

         } else {
            # every DoW in MMM [YY]
            $freq = "1*$mmm:1-5:$dow:0:0:0";
         }

      } else {
         if (defined($last)) {
            # last DoW in every month [in YY]
            $freq = "0:1*-1:$dow:0:0:0";

         } elsif (defined($nth)) {
            # Nth DoW in every month [in YY]
            $freq = "0:1*$nth:$dow:0:0:0";

         } else {
            # every DoW in every month [in YY]
            $freq = "0:1*1-5:$dow:0:0:0";
         }
      }

   } elsif (defined($day)) {
      if (defined($month)) {
         if (defined($nth)) {
            # Nth day of every month [YY]



( run in 0.730 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )