Branch Coverage

lib/ChordPro/Output/PDF.pm
Criterion Covered Total %
branch 141 362 38.9


line true false branch
49 0 0 unless $sb->{'songs'}[0]{'body'} or $sb->{'songs'}[0]{'source'}{'embedding'}
60 8 0 if ($main::options->{'toc'} // @{$sb->{'songs'};} > 1)
63 8 0 unless $_->{'omit'}
65 0 8 if $main::options->{'title'}
67 0 8 if $pagectrl->{'cover'} and not $main::options->{'title'}
68 3 5 if $pagectrl->{'front_matter'}
69 3 5 if $pagectrl->{'back_matter'}
70 8 0 if $main::options->{'csv'}
75 1 7 if ($pagectrl->{'align_songs_spread'})
78 0 8 if ($pagectrl->{'sort_songs'})
81 0 8 if ($pagectrl->{'compact_songs'})
83 0 0 unless defined $prefill
92 0 8 if $main::options->{'verbose'}
95 0 8 if $regtest
99 24 8 unless defined $v and $v ne ""
127 1 7 if $prefill and is_even($page_offset)
138 3 5 if ($pagectrl->{'back_matter'})
140 0 3 unless $back_matter
144 0 3 if $pagectrl->{'align_songs_extend'}
150 3 21 if is_odd($page_offset)
153 0 24 if ($song->{'meta'}{'pages'}) { }
154 0 0 if (($page + $page_offset) % 2 and $song->{'meta'}{'pages'} and $song->{'meta'}{'pages'} == 2)
170 0 24 if ($sb->{'assets'} and %{$sb->{'assets'};})
177 0 24 unless progress("msg", $song->{'meta'}{'title'}[0])
194 24 0 if ($song->{'meta'}{'bookmark'}) { }
196 24 0 if $pages
212 0 0 $main::config->{'toc'}{'order'} eq 'alpha' ? :
216 8 0 if ($extra_matter)
226 0 24 unless $main::options->{'toc'} // @book > 1
229 96 0 if exists $ctl->{$_}
232 8 16 if $ctl->{'omit'}
246 16 0 if ($ctl->{'template'})
248 0 16 if ($tpl =~ /\.\w+/) { }
251 0 0 unless $tmplfile
255 0 16 if ($verbose)
256 0 0 $tmplfile ? :
266 0 16 if ($tmplfile) { }
282 16 0 $_->{'title'} ? :
289 0 16 if (@songs > 1)
293 0 0 if defined $main::options->{'title'}
296 0 0 if defined $main::options->{'subtitle'}
304 0 16 if ($ctl->{'break'}) { }
313 0 0 if ($nl and $break ne $prevbreak)
319 0 0 $break ne $prevbreak ? :
349 8 0 if ($frontmatter_songbook and @{$frontmatter_songbook->{'songs'};})
350 0 8 unless progress("msg", "ToC")
360 0 16 $pagectrl->{'align_tocs'} eq 'songs' ? :
363 0 16 $pagectrl->{'align_tocs'} eq 'songs' ? :
385 16 0 if $pages
393 3 5 if ($pagectrl->{'front_matter'})
396 0 3 unless $matter
397 0 3 unless progress("msg", "Front matter")
408 0 8 if (defined $main::options->{'title'} and not @tocs)
411 0 0 if ($verbose)
412 0 0 $covertpl ? :
416 0 8 if ($covertpl) { }
0 8 elsif (defined $pagectrl->{'cover'}) { }
428 0 0 $main::options->{'title'} ? :
431 0 0 $main::options->{'subtitle'} ? :
452 0 0 unless $cover
454 0 0 unless progress("msg", "Cover")
464 3 5 if ($back_matter)
466 0 3 unless progress("msg", "Back matter")
469 0 3 unless 1 + $main::pr->{'pdf'}->pages == $start_of{'back'}
488 6 2 if ($pagectrl->{'dual_pages'})
492 6 18 unless $pages_of{$part}
497 15 3 if (@parts) { }
498 1 5 $prefill ? :
6 9 $part eq 'songbook' ? :
8 7 if ($main::pr->page_align($pagectrl, $part, $start_of{$part}, $part eq "songbook" ? $prefill ? 1 : is_odd($page_offset) : 0))
517 0 8 if ($main::config->{'debug'}{'pages'} & 1)
528 3 5 if $pages_of{'front'}
530 8 0 if $pages_of{'toc'}
534 8 0 if $pages_of{'songbook'}
536 3 5 if $pages_of{'back'}
540 18 14 unless $pages_of{$_}
549 0 8 if $main::options->{'verbose'}
551 8 0 if ($main::options->{'csv'})
552 0 8 unless progress("msg", "CSV")
565 0 8 unless my $fd = fs_open($csv, ">:utf8")
569 0 8 if $main::config->{'debug'}{'csv'} or $main::options->{'verbose'}
578 328 0 unless is_arrayref($v)
579 0 328 unless defined $v and defined $v->[0]
581 328 0 unless $v =~ /[$sep"\n\r]/s
588 9 24 if (@_ == 1)
592 3 30 $pages > 1 ? :
601 33 264 if $_->{'omit'}
613 8 64 if $_->{'omit'}
622 3 5 unless ($ctl->{'songsonly'})
628 0 3 if $pages_of->{'cover'}
634 3 0 if $pages_of->{'front'}
640 3 0 if $pages_of->{'toc'}
644 0 8 if $main::config->{'debug'}{'csv'}
654 3 5 unless ($ctl->{'songsonly'})
660 3 0 if $pages_of->{'back'}
664 0 8 if $main::config->{'debug'}{'csv'} or $main::options->{'verbose'}
670 0 0 unless $main::config->{'debug'}{'fonts'}
673 0 0 if $verbose
706 2 6 unless ($pagectrl->{'dual_pages'})
710 3 5 unless ($pagectrl->{'align_songs'})
715 18 6 unless is_true($pagectrl->{$_})
717 0 8 if ($main::config->{'debug'}{'pagectrl'})
725 6 2 $pagectrl->{'dual_pages'} ? :
726 6 2 if ($pagectrl->{'align_tocs'})
728 0 6 if $pagectrl->{'align_tocs'} eq "song"
730 5 3 if ($pagectrl->{'align_songs'})
732 0 5 if $pagectrl->{'align_songs_extend'}
733 1 4 if $pagectrl->{'align_songs_spread'}
735 0 8 if $pagectrl->{'sort_songs'}
742 0 0 unless my $sorting = $pagectrl->{'sort_songs'}
745 0 0 unless (defined $song->{'meta'}{'sorttitle'})
754 0 0 if ($sorting =~ /^([-+]?)title$/i) { }
0 0 elsif ($sorting =~ /^([-+]?)subtitle$/i) { }
762 0 0 unless @tbs
766 0 0 $desc ? :
774 0 0 if $@
790 0 0 unless $pagectrl->{'compact_songs'}
800 0 0 unless (defined $song->{'meta'}{'sorttitle'})
815 0 0 unless progress("msg", $song->{'title'})
824 0 0 if $song->{'assets'}
834 0 0 if $assets
842 0 0 unless is_odd($main::options->{'start-page-number'} || 1)
843 0 0 unless is_odd($songlist[$i]{'meta'}{'pages'})
849 0 0 unless @new
853 0 0 if vec $used, $i, 1
854 0 0 unless is_even($songlist[$i]{'meta'}{'pages'})
861 0 0 if vec $used, $i, 1
862 0 0 unless is_odd($songlist[$i]{'meta'}{'pages'})
867 0 0 unless scalar @new == scalar @songlist
883 0 11 if ($ENV{'CHORDPRO_PDF_API'})
887 0 11 if ($lib) { }
888 0 0 unless (eval "require $lib")
892 0 0 if $verbose
896 0 11 unless eval "require $_"
898 0 11 if $verbose
902 0 11 unless $pdfapi
922 16 0 unless $_
923 0 0 if (m[/]) { }
927 0 0 if (is_corefont($_)) { }
0 0 elsif (defined $pdf->{'fontconfig'}{s/\s+\d+$//r}) { }
939 0 16 if $_
944 0 8 if $_
947 8 0 unless $_
952 8 0 unless defined $_
958 8 0 unless defined $_
963 0 8 if ($main::options->{'chord-grid-size'})
972 8 0 unless (eval { do { $pdf->{'papersize'}[0] } })
976 0 8 unless exists $ps{lc $pdf->{'papersize'}}
984 104 360 if /^(?:background|frame)$/
985 8 352 if $font eq "chordfingers" and $_ eq "size"
1016 0 0 if ($type eq 'keyboard') { }
1044 0 0 if ($kk =~ /^([-\w]+)=(.+)$/) { }
1048 0 0 unless $k =~ /^(id|chord)$/
1050 0 0 if ($k =~ /^(id|bbox|chord|src)$/) { }
0 0 elsif ($k eq 'align' and $v =~ /^(left|right|center)$/) { }
0 0 elsif ($k eq 'type' and $v =~ /^(strings?|keyboard)$/) { }
0 0 elsif ($k =~ /^(width|height|dx|dy|w|h)$/) { }
0 0 elsif ($k =~ /^(scale)$/) { }
1051 0 0 if ($v =~ /^(chord|builtin):/)
1064 0 0 if $v =~ /^(-?[\d.]+)pt$/
1065 0 0 if $v =~ /^(-?[\d.]+)em$/
1066 0 0 if $v =~ /^(-?[\d.]+)ex$/
1068 0 0 if ($v =~ /^(-?[\d.]+)\%$/) { }
1079 0 0 if /^([\d.]+)\%$/
1082 0 0 unless @s > 1
1083 0 0 unless (@s == 2)
1102 0 0 if ($err) { }
0 0 elsif ($ctl{'id'}) { }
1103 0 0 if ($ctl{'id'})
1109 0 0 if ($a and $a->{'opts'}{'base'})
1120 0 0 if ($fragment->{'id'}) { }
0 0 elsif ($fragment->{'builtin'}) { }
0 0 elsif ($fragment->{'chord'}) { }
1122 0 0 if $o
1123 0 0 unless ($o and $xo)
1125 0 0 unless $fragment->{'id'} eq "__ERROR__"
1129 0 0 if ($o->{'width'} and $o->{'vwidth'})
1136 0 0 if ($i =~ /^alert(?:\(([\d.]+)\))?$/) { }
1146 0 0 if ($info) { }
1194 0 0 if $k =~ /^(size|color|bgcolor|href)$/
1196 0 0 if defined $glyphs->{$k}