| line |
true |
false |
branch |
|
74
|
0 |
461 |
if $time_buffer |
|
166
|
41 |
42 |
if $b1 |
|
175
|
2 |
30 |
if $b1 |
|
185
|
6 |
5 |
if $b1 |
|
312
|
0 |
416 |
if $suffix eq 'p' and $hour < 12 |
|
313
|
0 |
416 |
if $hour > 11 |
|
314
|
0 |
416 |
if $hour == 12 and $suffix eq 'a' |
|
315
|
0 |
416 |
if $hour > 23 or $minute > 59 or $second > 59 or $suffix eq 'a' and $hour > 12 |
|
322
|
0 |
416 |
if $suffix eq 'a' and $hour == 12 |
|
335
|
445 |
0 |
if ($phrase =~ m[
\A \s*+ (?: (?&ever) | (?&span) ) \s*+ \Z
(?(DEFINE)
(? (?: all | always | ever | (?:(?:the \s++)? (?: entire | whole ) \s++ )? log ) (?{ $matches{'ever'} = 1; }) )
(?
((?&date)) (?{
$d1 = $^N;
stow($d1);
})
(?: (?&span_divider) ((?&date)) (?{
$d2 = $^N;
stow($d2);
}) )?
)
(? \s*+ (?: -++ | \b(?: through | thru | to | till?+ | until )\b ) \s*+)
(? at | @ )
(?
(?{ $time_buffer = undef; })
(?: (?: \s++ | \s*+ (?&at) \s*+ ) (?&time))?
)
(? (?:(?&at) \s++)? (?&time) \s++ on \s++ )
(?
(?{ (%buffer, $b1, $b2, $time_buffer) = (); })
(?: (?&numeric) | (?&verbal) )
(?{ $buffer{'time'} = $time_buffer if $time_buffer; })
)
(? |
|
336
|
0 |
445 |
if ($matches{'ever'}) |
|
340
|
0 |
0 |
if ($se) { } |
|
351
|
4 |
441 |
if ($unit) { } |
|
361
|
20 |
421 |
if ($d2 and $matches{$d2}) { } |
|
375
|
356 |
85 |
if (is_fixed($h1)) { } |
|
|
1 |
84 |
elsif (is_fixed($h2)) { } |
|
384
|
0 |
441 |
unless 'DateTime'->compare($h1, $h2) <= 0 |
|
388
|
0 |
441 |
if ($h1 > $h2) |
|
389
|
0 |
0 |
if ($h1->year == $h2->year and $h1->month == $h2->month and $h1->day == $h2->day and $h2->hour < 12 and $s2 eq 'x') { } |
|
413
|
3 |
0 |
if (keys %$h1 == 2 and keys %$h2 == 2 and $h1->{'period'} and $h2->{'period'}) |
|
423
|
416 |
45 |
if (defined $time) { } |
|
431
|
30 |
15 |
$is_start ? : |
|
441
|
0 |
1 |
if (is_fixed($h1)) { } |
|
447
|
1 |
0 |
if (ref $h1 eq 'DateTime') { } |
|
468
|
0 |
81 |
if $delta <= 0 |
|
476
|
82 |
90 |
if ($h->{'type'} eq 'numeric') { } |
|
477
|
82 |
0 |
if exists $h->{'month'} |
|
481
|
2 |
88 |
if (my $period = $h->{'period'}) { } |
|
489
|
7 |
81 |
if exists $h->{'month'} |
|
490
|
81 |
0 |
if exists $h->{'day'} |
|
500
|
164 |
192 |
unless ($two_endpoints or $h2->{'type'} ne 'numeric') |
|
501
|
163 |
1 |
if defined $h2->{'day'} |
|
504
|
189 |
3 |
if (is_fixed($h2)) { } |
|
510
|
1 |
2 |
unless ref $h2 eq 'DateTime' |
|
522
|
82 |
90 |
if $h->{'type'} eq 'numeric' |
|
527
|
2 |
88 |
if (my $period = $h->{'period'}) { } |
|
532
|
0 |
0 |
unless $is_start |
|
536
|
0 |
0 |
if sunday_begins_week() |
|
537
|
0 |
0 |
unless $is_start |
|
544
|
1 |
1 |
unless $is_start |
|
550
|
1 |
1 |
unless $is_start |
|
554
|
81 |
7 |
if (exists $h->{'day'} and not $h->{'day'} =~ /^\d++$/u) |
|
560
|
7 |
0 |
if (exists $h->{'month'}) |
|
578
|
2 |
87 |
unless (exists $h->{'day'} or $is_start) |
|
587
|
363 |
187 |
if ($d->{'type'} eq 'verbal') |
|
588
|
247 |
116 |
if ($d->{'year'}) { } |
|
|
95 |
21 |
elsif (my $day = $d->{'day'}) { } |
|
596
|
10 |
85 |
if $day eq 'tod' |
|
597
|
2 |
83 |
if ($day eq 'yes') { } |
|
|
3 |
80 |
elsif ($day eq 'tom') { } |
|
608
|
0 |
80 |
if ($d->{'modifier'} eq 'this') { } |
|
609
|
0 |
0 |
if $day_num == $todays_num |
|
610
|
0 |
0 |
$day_num > $todays_num ? : |
|
619
|
0 |
80 |
if ($day_num < $todays_num) { } |
|
|
0 |
80 |
elsif ($day_num > $todays_num) { } |
|
626
|
0 |
80 |
if $d->{'modifier'} eq 'next' |
|
631
|
17 |
4 |
if (my $period = $d->{'period'}) |
|
633
|
10 |
7 |
if ($d->{'modifier'} eq 'this') { } |
|
637
|
2 |
2 |
unless $is_start |
|
642
|
2 |
0 |
if (sunday_begins_week()) |
|
643
|
0 |
2 |
$is_sunday ? : |
|
645
|
1 |
1 |
unless $is_start |
|
649
|
1 |
1 |
unless $is_start |
|
656
|
1 |
1 |
unless $is_start |
|
660
|
5 |
5 |
unless $is_start |
|
666
|
0 |
0 |
if ($is_start) { } |
|
672
|
0 |
0 |
if $d->{'modifier'} eq 'next' |
|
677
|
5 |
0 |
if (sunday_begins_week()) |
|
678
|
0 |
5 |
$is_sunday ? : |
|
680
|
3 |
2 |
if ($is_start) { } |
|
686
|
0 |
5 |
if $d->{'modifier'} eq 'next' |
|
690
|
1 |
1 |
if ($is_start) { } |
|
696
|
0 |
2 |
if $d->{'modifier'} eq 'next' |
|
703
|
0 |
0 |
if ($is_start) { } |
|
710
|
0 |
0 |
if $d->{'modifier'} eq 'next' |
|
722
|
2 |
2 |
if ($d->{'modifier'} eq 'this') { } |
|
724
|
0 |
2 |
if ($todays_num > $month_num) { } |
|
|
2 |
0 |
elsif ($todays_num < $month_num) { } |
|
730
|
1 |
1 |
unless $is_start |
|
735
|
0 |
2 |
if ($todays_num > $month_num) { } |
|
|
2 |
0 |
elsif ($todays_num < $month_num) { } |
|
741
|
1 |
1 |
unless $is_start |
|
744
|
2 |
2 |
unless $is_start |
|
755
|
2 |
258 |
unless (%month_abbr) |
|
763
|
1 |
160 |
unless (%day_abbr) |
|
783
|
2 |
82 |
if $two_endpoints |
|
788
|
40 |
44 |
unless ref $h2 eq 'DateTime' |
|
789
|
40 |
44 |
unless ref $h1 eq 'DateTime' |
|
797
|
2 |
82 |
if ($two_endpoints) |
|
812
|
0 |
2 |
if ($h1->{'type'} eq $h2->{'type'}) { } |
|
|
2 |
0 |
elsif ($h2->{'type'} eq 'numeric') { } |
|
821
|
2 |
0 |
if ($h1->{'month'} and not $h2->{'month'}) |
|
836
|
236 |
229 |
if ($h->{'type'} eq 'verbal') |
|
838
|
362 |
346 |
if (my $value = $h->{$key}) |
|
839
|
126 |
236 |
if $value =~ /\d/u |
|
841
|
3 |
233 |
if ($value =~ /^p/u) { } |
|
842
|
0 |
3 |
unless defined start_pay_period() |
|
866
|
430 |
289 |
if exists $h->{'year'} |
|
867
|
207 |
82 |
if ($h->{'type'} eq 'verbal') |
|
868
|
101 |
106 |
if (exists $h->{'modifier'}) |
|
869
|
101 |
0 |
if $h->{'modifier'} =~ /this|last|next/u |
|
871
|
100 |
6 |
if (exists $h->{'day'}) |
|
872
|
15 |
85 |
if $h->{'day'} =~ /yes|tod|tom/u |