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 )