Branch Coverage

blib/lib/Time/ParseDate.pm
Criterion Covered Total %
branch 345 494 69.8


line true false branch
82 147 140 defined $options{'NOW'} ? :
84 6 281 defined $options{'UK'} ? :
88 9 278 if ($t =~ s[^ ([ \d]\d) / (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) / (\d\d\d\d) : (\d\d) : (\d\d) : (\d\d) (?: [ ] ([-+] \d\d\d\d) (?: \("?(?:(?:[A-Z]{1,4}[TCW56])|IDLE)\))? )? $break ][]xi) { }
1 277 elsif ($t =~ s[^(\d\d)/(\d\d)/(\d\d)\.(\d\d)\:(\d\d)($break)][]) { }
104 5 4 $7 ? :
105 0 9 if $Time::ParseDate::debug
112 0 1 if $Time::ParseDate::debug
115 315 1 unless (defined $m or defined $rd or defined $y or $passes == 0 and $options{'TIMEFIRST'})
119 195 120 if (&parse_date_only(\$t, \$y, \$m, \$d, $uk))
120 0 195 if $Time::ParseDate::debug
124 322 52 unless (defined $H or defined $rs)
125 155 167 if (&parse_time_only(\$t, \$H, \$M, \$S, \$tz, %options))
128 0 155 if $Time::ParseDate::debug
132 0 468 if $passes == 0 and $options{'TIMEFIRST'}
133 246 222 unless (defined $y)
134 31 215 if (&parse_year_only(\$t, \$y, $now, %options))
135 0 31 if $Time::ParseDate::debug
139 197 120 if (not defined $tz || defined $tzo || defined $rs and defined $m || defined $H)
142 63 134 if (&parse_tz_only(\$t, \$tz, \$tzo))
143 0 63 if $Time::ParseDate::debug
147 167 52 unless (defined $H or defined $rs)
148 38 129 if (&parse_time_offset(\$t, \$rs, %options))
150 0 38 if $Time::ParseDate::debug
154 82 0 unless (defined $m or defined $rd or defined $y)
155 57 25 if (&parse_date_offset(\$t, $now, \$y, \$m, \$d, \$rd, \$rs, %options))
159 0 57 if $Time::ParseDate::debug
163 199 80 if (defined $M or defined $rd)
164 2 197 if ($t =~ s/^\s*(?:at|\@|\+)($break)//x)
166 0 2 if $Time::ParseDate::debug
173 0 541 if $Time::ParseDate::debug
177 3 274 if ($passes == 0)
178 0 3 if $Time::ParseDate::debug
179 0 3 if wantarray
185 0 284 if $Time::ParseDate::debug
189 15 269 if ($t ne '')
191 0 15 if $Time::ParseDate::debug
192 2 13 if ($options{'WHOLE'})
193 0 2 if wantarray
201 22 44 unless (defined $y or defined $m or defined $rd)
202 0 22 if $Time::ParseDate::debug
203 22 0 if (defined $rs or defined $H) { }
205 0 22 if ($options{'DATE_REQUIRED'})
206 0 0 if wantarray
210 17 5 if (defined $rs)
211 0 17 if $Time::ParseDate::debug
213 0 17 if wantarray
218 0 0 if $Time::ParseDate::debug
219 0 0 if wantarray
225 0 1 if ($options{'TIME_REQUIRED'} and not defined $rs and not defined $H and not defined $rd)
228 0 0 if wantarray
236 49 216 if (defined $rd) { }
237 42 7 if (defined $rs or not defined $H || defined $M || defined $S)
238 0 42 if $Time::ParseDate::debug
240 18 24 defined $rs ? :
250 28 14 if ($isdst_now == $isdst_then or $options{'GMT'})
252 0 28 if wantarray
256 0 14 if $Time::ParseDate::debug
259 0 21 if $Time::ParseDate::debug
260 3 18 $options{'GMT'} ? :
263 0 21 if $Time::ParseDate::debug
266 19 197 unless (defined $y)
267 4 15 if ($options{'PREFER_PAST'}) { }
3 12 elsif ($options{'PREFER_FUTURE'}) { }
271 0 4 if $Time::ParseDate::debug
272 2 2 if $mon011 + 1 < $m or $mon011 + 1 == $m and $day < $d
275 0 3 if $Time::ParseDate::debug
278 1 2 if $mon011 >= $m or $mon011 + 1 == $m and $day > $d
281 0 12 if $Time::ParseDate::debug
287 65 151 if $y < 100
290 6 210 if ($options{'VALIDATE'})
293 2 4 if ($y < 1000 or $m < 1 or $d < 1 or $y > 9999 or $m > 12 or $d > $dim)
296 0 2 if wantarray
302 0 214 if $Time::ParseDate::debug
307 72 163 unless (defined $H)
308 28 44 if (defined $rd or defined $rs)
310 0 28 if $Time::ParseDate::debug
316 0 0 defined $rs ? :
0 235 if $Time::ParseDate::debug
324 101 134 unless $S
325 68 167 unless $M
326 66 169 unless $H
328 2 2 if ($options{'VALIDATE'} and $S < 0 || $M < 0 || $H < 0 || $S > 59 || $M > 59 || $H > 23)
331 0 2 if wantarray
335 20 213 if defined $rs
346 0 233 if $Time::ParseDate::debug
349 0 233 if $Time::ParseDate::debug
358 43 190 if ($tz) { }
27 163 elsif (defined $tzo) { }
360 43 0 if (defined $tzadj) { }
361 0 43 if $Time::ParseDate::debug
365 0 0 if $Time::ParseDate::debug
370 0 27 if $Time::ParseDate::debug
373 160 3 unless ($options{'GMT'})
374 38 122 if ($options{'ZONE'}) { }
377 0 38 unless (defined $tzadj)
378 0 0 if wantarray
382 0 38 if $Time::ParseDate::debug
386 0 122 if $Time::ParseDate::debug
397 0 233 if $Time::ParseDate::debug
399 1 232 if wantarray
408 28 0 if (defined $offset and $offset =~ s/^([-+])(\d\d):?(\d\d)$//)
409 18 10 $1 eq '+' ? :
423 4 193 if ($$tr =~ s/^ ([-+]\d\d:?\d\d) \s+ \( "? (?: (?: [A-Z]{1,4}[TCW56] ) | IDLE ) \) $break //x) { }
6 187 elsif ($$tr =~ s/^GMT\s*([-+]\d{1,2})($break)//x) { }
13 174 elsif ($$tr =~ s/^(?:GMT\s*)?([-+]\d\d:?\d\d)($break)//x) { }
40 134 elsif ($$tr =~ s/^"?((?:[A-Z]{1,4}[TCW56])|IDLE)$break//x) { }
439 0 4 if $Time::ParseDate::debug
443 6 0 if ($o < 24 and not $o =~ /^0/)
445 0 6 if $Time::ParseDate::debug
450 0 6 if $Time::ParseDate::debug
455 0 13 if $Time::ParseDate::debug
459 1 39 if $$tz eq 'MET' and $$tr =~ s/^DST$break//x
461 0 40 if $Time::ParseDate::debug
473 39 276 if ($$tr =~ s[^(\d\d\d\d)([-./])(\d\d?)\2(\d\d?)(T|$break)][]) { }
15 261 elsif ($$tr =~ s[^(\d\d?)([-./])(\d\d?)\2(\d\d\d\d?)($break)][]) { }
1 260 elsif ($$tr =~ s[^(\d\d\d\d)/(\d\d?)$break][]x) { }
26 234 elsif ($$tr =~ s[^(?xi)\n\t\t\t(?:\n\t\t\t\t(?:Mon|Monday|Tue|Tuesday|Wed|Wednesday|\n\t\t\t\t\tThu|Thursday|Fri|Friday|\n\t\t\t\t\tSat|Saturday|Sun|Sunday),?\n\t\t\t\t\s+\n\t\t\t)?\n\t\t\t(\d\d?)\n\t\t\t(\s+ | - | \. | /)\n\t\t\t(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.?\n\t\t\t(?:\n\t\t\t\t\2\n\t\t\t\t(\d\d (?:\d\d)? )\n\t\t\t)?\n\t\t\t$break\n\t\t\t][]) { }
44 190 elsif ($$tr =~ s[^(?xi)\n\t\t\t(?:\n\t\t\t\t(?:Mon|Monday|Tue|Tuesday|Wed|Wednesday|\n\t\t\t\t\tThu|Thursday|Fri|Friday|\n\t\t\t\t\tSat|Saturday|Sun|Sunday),?\n\t\t\t\t\s+\n\t\t\t)?\n\t\t\t(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.?\n\t\t\t((\s)+ | - | \. | /)\n\t\t\t\t\n\t\t\t(\d\d?)\n\t\t\t,?\n\t\t\t(?:\n\t\t\t\t(?: \2|\3+)\n\t\t\t\t(\d\d (?: \d\d)?)\n\t\t\t)?\n\t\t\t$break\n\t\t\t][]) { }
9 181 elsif ($$tr =~ s/^(?xi)\n\t\t\t(January|Jan\.?|February|Feb\.?|March|Mar\.?|April|Apr\.?|May|\n\t\t\t June|Jun\.?|July|Jul\.?|August|Aug\.?|September|Sep\.?|\n\t\t\t October|Oct\.?|November|Nov\.?|December|Dec\.?)\n\t\t\t\s+\n\t\t\t(\d+)\n\t\t\t(?:st|nd|rd|th)?\n\t\t\t\,?\n\t\t\t(?: \n\t\t\t\t\s+\n\t\t\t\t(?:\n\t\t\t\t\t(\d\d\d\d)\n\t\t\t\t\t|(?:\' (\d\d))\n\t\t\t\t)\n\t\t\t)?\n\t\t\t$break\n\t\t\t//) { }
46 135 elsif ($$tr =~ s[^(\d\d?)([-/.])(\d\d?)\2(\d\d?)($break)][]x) { }
5 130 elsif ($$tr =~ s[^(\d\d?)/(\d\d?)($break)][]x) { }
8 122 elsif ($$tr =~ s/^(\d\d)(\d\d)(\d\d)($break)//x) { }
1 121 elsif ($$tr =~ s[^(?xi)\n\t\t\t(\d{1,2})\n\t\t\t(\s+ | - | \. | /)\n\t\t\t(January|Jan\.?|February|Feb\.?|March|Mar\.?|April|Apr\.?|May|\n\t\t\t June|Jun\.?|July|Jul\.?|August|Aug\.?|September|Sep\.?|\n\t\t\t October|Oct\.?|November|Nov\.?|December|Dec\.?)\n\t\t\t(?:\n\t\t\t\t\2\n\t\t\t\t(\n\t\t\t\t\t\d\d\n\t\t\t\t\t(?:\d\d)?\n\t\t\t\t)\n\t\t\t)\n\t\t\t$break\n\t\t\t][]) { }
1 120 elsif ($$tr =~ s/^(?xi)\n\t\t\t(\d+)\n\t\t\t(?:st|nd|rd|th)?\n\t\t\t\s+\n\t\t\t(January|Jan\.?|February|Feb\.?|March|Mar\.?|April|Apr\.?|May|\n\t\t\t June|Jun\.?|July|Jul\.?|August|Aug\.?|September|Sep\.?|\n\t\t\t October|Oct\.?|November|Nov\.?|December|Dec\.?)\n\t\t\t(?: \n\t\t\t\t\,?\n\t\t\t\t\s+\n\t\t\t\t(\d\d\d\d)\n\t\t\t)?\n\t\t\t$break\n\t\t\t//) { }
477 0 39 if $Time::ParseDate::debug
483 8 7 if ($uk or $1 > 12) { }
488 0 15 if $Time::ParseDate::debug
494 0 1 if $Time::ParseDate::debug
515 0 26 if $Time::ParseDate::debug
516 0 26 if $Time::ParseDate::debug and not defined $$yr
539 0 44 if $Time::ParseDate::debug
540 0 44 if $Time::ParseDate::debug and not defined $$yr
564 0 9 if $Time::ParseDate::debug
565 0 9 if $Time::ParseDate::debug and not defined $$yr
566 0 9 if $Time::ParseDate::debug
569 17 29 if ($1 > 31 or not $uk and $1 > 12 and $4 < 32) { }
4 25 elsif ($1 > 12 or $uk) { }
579 0 46 if $Time::ParseDate::debug
582 1 4 if ($1 > 31 or not $uk and $1 > 12) { }
1 3 elsif ($2 > 31 or $uk and $2 > 12) { }
0 3 elsif ($1 > 12 or $uk) { }
595 0 5 if $Time::ParseDate::debug
598 7 1 if ($1 > 31 or not $uk and $1 > 12) { }
0 1 elsif ($1 > 12 or $uk) { }
608 0 8 if $Time::ParseDate::debug
627 0 1 if $Time::ParseDate::debug
645 0 1 if $Time::ParseDate::debug
646 0 1 if $Time::ParseDate::debug and not defined $$yr
647 0 1 if $Time::ParseDate::debug
659 151 171 if ($$tr =~ s/^(?x)\n\t\t\t(?:\n\t\t\t\t(?:\n\t\t\t\t\t([012]\d)\t\t(?# \$1)\n\t\t\t\t\t(?:\n\t\t\t\t\t\t([0-5]\d) \t(?# \$2)\n\t\t\t\t\t\t(?:\n\t\t\t\t\t\t ([0-5]\d)\t(?# \$3)\n\t\t\t\t\t\t)?\n\t\t\t\t\t)\n\t\t\t\t\t\s*\n\t\t\t\t\t([apAP][mM])? \t\t(?# \$4)\n\t\t\t\t) | (?:\n\t\t\t\t\t(\d{1,2}) \t\t(?# \$5)\n\t\t\t\t\t(?:\n\t\t\t\t\t\t\:\n\t\t\t\t\t\t(\d\d)\t\t(?# \$6)\n\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\:\n\t\t\t\t\t\t\t(\d\d)\t(?# \$7)\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?# don't barf on database sub-second timings)\n\t\t\t\t\t\t\t\t\t[:.,]\n\t\t\t\t\t\t\t\t\t\d+\n\t\t\t\t\t\t\t\t)?\t(?# \$8)\n\t\t\t\t\t\t)?\n\t\t\t\t\t)\n\t\t\t\t\t\s*\n\t\t\t\t\t([apAP][mM])?\t\t(?# \$9)\n\t\t\t\t) | (?:\n\t\t\t\t\t(\d{1,2})\t\t(?# \$10)\n\t\t\t\t\t([apAP][mM])\t\t(?# \${11})\n\t\t\t\t)\n\t\t\t)\n\t\t\t(?:\n\t\t\t\t\s+\n\t\t\t\t"?\n\t\t\t\t(\t\t\t\t(?# \${12})\n\t\t\t\t\t(?: [A-Z]{1,4}[TCW56] )\n\t\t\t\t\t|\n\t\t\t\t\tIDLE\n\t\t\t\t)\t\n\t\t\t)?\n\t\t\t$break\n\t\t\t//) { }
2 169 elsif ($$tr =~ s/^noon$break//xi) { }
2 167 elsif ($$tr =~ s/^midnight$break//xi) { }
709 7 6 if (defined $8 and exists $options{'SUBSECOND'} and $options{'SUBSECOND'})
714 0 151 if $Time::ParseDate::debug
717 20 11 if $ampm and ("\U$ampm\E" eq 'PM' and $$hr != 12)
718 5 146 if $$hr == 12 and "\U$ampm\E" eq 'AM'
719 0 151 if $Time::ParseDate::debug
724 0 2 if $Time::ParseDate::debug
729 0 2 if $Time::ParseDate::debug
741 0 167 if $options{'NO_RELATIVE'}
743 38 129 if ($$tr =~ s[^(?xi)\t\t\t\t\t\n\t\t\t(?:\n\t\t\t\t(-)\t\t\t\t(?# 1)\n\t\t\t\t|\n\t\t\t\t[+]\n\t\t\t)?\n\t\t\t\s*\n\t\t\t(?:\n\t\t\t\t(\d+(?:\.\d+)?) \t\t(?# 2)\n\t\t\t\t| \t\t\n\t\t\t\t(?:(\d+)\s+(\d+)/(\d+))\t\t(?# 3 4/5)\n\t\t\t)\n\t\t\t\s*\n\t\t\t(sec|second|min|minute|hour)s?\t\t(?# 6)\n\t\t\t(\n\t\t\t\t\s+\n\t\t\t\tago\t\t\t\t(?# 7)\n\t\t\t)?\n\t\t\t$break\n\t\t\t][])
764 38 0 unless defined $$rsr
765 0 38 if defined $5 and $5 == 0
766 37 1 defined $2 ? :
769 10 28 if $1
772 5 33 if $7 or $$tr =~ /\b(day|mon|month|year)s?\s*ago\b/
774 0 38 if $Time::ParseDate::debug
798 0 65 if $yr > 100
807 3 62 if ($options{'PREFER_PAST'}) { }
3 59 elsif ($options{'PREFER_FUTURE'}) { }
0 59 elsif ($options{'UNAMBIGUOUS'}) { }
808 2 1 if ($yr > $within)
813 1 2 if ($yr < $within - 20)
823 1 58 if ($within > 80 and $within - $yr > 60)
827 35 24 if ($within < 30 and $yr - $within > 59)
831 0 65 if $Time::ParseDate::debug
840 0 33 unless $units
842 0 33 if $Time::ParseDate::debug
844 17 16 if ($units eq 'day') { }
3 13 elsif ($units eq 'week') { }
0 13 elsif ($umult{$units}) { }
7 6 elsif ($units eq 'mon' or $units eq 'month') { }
6 0 elsif ($units eq 'year') { }
852 5 2 unless $$rsr
855 6 0 unless $$rsr
859 0 33 if $Time::ParseDate::debug
871 0 13 if $Time::ParseDate::debug
875 0 13 if $Time::ParseDate::debug
876 6 7 if ($m11 > 11 or $m11 < 0)
877 2 4 if $m11 < 0 and $m11 % 12 != 0
884 0 13 if $Time::ParseDate::debug
895 4 9 if ($d > 30 or $d > 28 and $m11 == 1)
898 0 4 if $Time::ParseDate::debug
899 2 2 if $d > $dim
907 3 192 if ($options{'GMT'}) { }
920 31 215 if ($$tr =~ s/^(\d\d\d\d)$break//) { }
0 215 elsif ($$tr =~ s/\'(\d\d)$break//) { }
922 0 31 if $Time::ParseDate::debug
926 0 0 if $Time::ParseDate::debug
936 0 82 if $options{'NO_RELATIVE'}
950 10 72 if ($$tr =~ s/^(?xi)\n\t\t\t\s*\n\t\t\t(\d+)\n\t\t\t\s*\n\t\t\t(day|week|month|year)s?\n\t\t\t(\n\t\t\t\t\s+\n\t\t\t\tago\n\t\t\t)?\n\t\t\t$break\n\t\t\t//) { }
16 56 elsif ($$tr =~ s/^(?xi)\n\t\t\t(?:\n\t\t\t\t(?:\n\t\t\t\t\tnow\n\t\t\t\t\t\s+\n\t\t\t\t)?\n\t\t\t\t(\+ | \-)\n\t\t\t\t\s*\n\t\t\t)?\n\t\t\t(\d+)\n\t\t\t\s*\n\t\t\t(day|week|month|year)s?\n\t\t\t$break\n\t\t\t//) { }
1 55 elsif ($$tr =~ s/^(?xi)\n\t\t\t(Mon|Tue|Wed|Thu|Fri|Sat|Sun|Monday|Tuesday\n\t\t\t\t|Wednesday|Thursday|Friday|Saturday|Sunday)\n\t\t\t\s+\n\t\t\tafter\n\t\t\t\s+\n\t\t\tnext\n\t\t\t$break\n\t\t\t//) { }
2 53 elsif ($$tr =~ s/^(?xi)\n\t\t\t(Mon|Tue|Wed|Thu|Fri|Sat|Sun|Monday|Tuesday\n\t\t\t\t|Wednesday|Thursday|Friday|Saturday|Sunday)\n\t\t\t\s+\n\t\t\tbefore\n\t\t\t\s+\n\t\t\tlast\n\t\t\t$break\n\t\t\t//) { }
4 49 elsif ($$tr =~ s/^(?xi)\n\t\t\tnext\s+\n\t\t\t(Mon|Tue|Wed|Thu|Fri|Sat|Sun|Monday|Tuesday\n\t\t\t\t|Wednesday|Thursday|Friday|Saturday|Sunday)\n\t\t\t$break\n\t\t\t//) { }
3 46 elsif ($$tr =~ s/^(?xi)\n\t\t\tlast\s+\n\t\t\t(Mon|Tue|Wed|Thu|Fri|Sat|Sun|Monday|Tuesday\n\t\t\t\t|Wednesday|Thursday|Friday|Saturday|Sunday)\n\t\t\t$break//) { }
3 43 elsif ($options{'PREFER_PAST'} and $$tr =~ s/^(?xi)\n\t\t\t(Mon|Tue|Wed|Thu|Fri|Sat|Sun|Monday|Tuesday\n\t\t\t\t|Wednesday|Thursday|Friday|Saturday|Sunday)\n\t\t\t$break//) { }
3 40 elsif ($options{'PREFER_FUTURE'} and $$tr =~ s/^(?xi)\n\t\t\t(Mon|Tue|Wed|Thu|Fri|Sat|Sun|Monday|Tuesday\n\t\t\t\t|Wednesday|Thursday|Friday|Saturday|Sunday)\n\t\t\t$break\n\t\t\t//) { }
1 39 elsif ($$tr =~ s/^today$break//xi) { }
1 38 elsif ($$tr =~ s/^tomorrow$break//xi) { }
1 37 elsif ($$tr =~ s/^yesterday$break//xi) { }
4 33 elsif ($$tr =~ s/^last\s+(week|month|year)$break//xi) { }
3 30 elsif ($$tr =~ s/^next\s+(week|month|year)$break//xi) { }
5 25 elsif ($$tr =~ s/^now $break//x) { }
963 3 7 if $3 or $$tr =~ /\b(sec|second|min|minute|hour)s?\s*ago\b/
967 0 10 if $Time::ParseDate::debug
988 0 16 if $Time::ParseDate::debug
1000 1 0 $wdays{"\L$1\E"} > $wday ? :
1001 0 1 if $Time::ParseDate::debug
1013 1 1 $wdays{"\L$1\E"} < $wday ? :
1014 0 2 if $Time::ParseDate::debug
1023 1 3 $wdays{"\L$1\E"} > $wday ? :
1025 0 4 if $Time::ParseDate::debug
1033 0 3 if $Time::ParseDate::debug
1034 1 2 $wdays{"\L$1\E"} < $wday ? :
1035 0 3 if $Time::ParseDate::debug
1042 0 3 if $Time::ParseDate::debug
1043 1 2 $wdays{"\L$1\E"} < $wday ? :
1044 0 3 if $Time::ParseDate::debug
1052 1 2 $wdays{"\L$1\E"} > $wday ? :
1054 0 3 if $Time::ParseDate::debug
1059 0 1 if $Time::ParseDate::debug
1063 0 1 if $Time::ParseDate::debug
1067 0 1 if $Time::ParseDate::debug
1071 0 4 if $Time::ParseDate::debug
1075 0 3 if $Time::ParseDate::debug
1088 0 0 defined $tz ? :
1089 0 0 defined $tzo ? :
1091 0 0 defined $H ? :
1092 0 0 defined $M ? :
1093 0 0 defined $S ? :
1095 0 0 defined $m ? :
1096 0 0 defined $d ? :
1097 0 0 defined $y ? :
1098 0 0 defined $rs ? :
1099 0 0 defined $rd ? :
1100 0 0 $rel ? :