|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
31
 | 
 0  | 
 117  | 
 unless ($k =~ /^(debug|fatal_errors)\z/)  | 
 
| 
99
 | 
 2  | 
 0  | 
 unless ref $self  | 
 
| 
104
 | 
 0  | 
 2  | 
 if (ref $file) { }  | 
 
| 
106
 | 
 0  | 
 0  | 
 unless binmode $file, ':utf8'  | 
 
| 
111
 | 
 0  | 
 2  | 
 unless open my $PARSER_FILE, $file  | 
 
| 
112
 | 
 0  | 
 2  | 
 unless binmode $PARSER_FILE, ':utf8'  | 
 
| 
125
 | 
 0  | 
 4  | 
 unless $object =~ /^(node|group|graph|edge)\z/  | 
 
| 
158
 | 
 27  | 
 14  | 
 if @{$self->{'stack'};} == 0  | 
 
| 
161
 | 
 33  | 
 8  | 
 if ($target and $target eq 'parent')  | 
 
| 
166
 | 
 33  | 
 0  | 
 if ref $stack  | 
 
| 
167
 | 
 22  | 
 11  | 
 unless (defined $object)  | 
 
| 
172
 | 
 22  | 
 0  | 
 if (not $stack or @$stack <= 1)  | 
 
| 
180
 | 
 0  | 
 41  | 
 if $self->{'error'}  | 
 
| 
182
 | 
 0  | 
 41  | 
 if (ref $stack->[-1] eq 'HASH')  | 
 
| 
194
 | 
 0  | 
 41  | 
 if $self->{'debug'} and $self->{'debug'} > 1  | 
 
| 
195
 | 
 1  | 
 40  | 
 if ($max_idx != 1) { }  | 
 
| 
212
 | 
 2  | 
 39  | 
 if (defined $a->{'basename'})  | 
 
| 
217
 | 
 2  | 
 4  | 
 if exists $s->{'autosplit_parts'}  | 
 
| 
235
 | 
 0  | 
 729  | 
 if $self->{'error'}  | 
 
| 
251
 | 
 0  | 
 57  | 
 unless defined $name  | 
 
| 
257
 | 
 15  | 
 42  | 
 if ($name eq '') { }  | 
 
| 
259
 | 
 0  | 
 15  | 
 if $self->{'debug'}  | 
 
| 
266
 | 
 0  | 
 42  | 
 if $self->{'debug'}  | 
 
| 
273
 | 
 2  | 
 55  | 
 if (@$group_stack > 0)  | 
 
| 
297
 | 
 0  | 
 44  | 
 unless defined $end  | 
 
| 
300
 | 
 35  | 
 9  | 
 if $end eq '['  | 
 
| 
301
 | 
 1  | 
 43  | 
 if $end eq '('  | 
 
| 
306
 | 
 8  | 
 36  | 
 if ($end eq ')') { }  | 
 
| 
310
 | 
 0  | 
 8  | 
 if $self->{'debug'}  | 
 
| 
328
 | 
 0  | 
 36  | 
 unless defined $group  | 
 
| 
330
 | 
 0  | 
 36  | 
 if $self->{'debug'}  | 
 
| 
333
 | 
 0  | 
 36  | 
 if $self->{'error'}  | 
 
| 
370
 | 
 0  | 
 98  | 
 unless defined $att  | 
 
| 
395
 | 
 0  | 
 63  | 
 if $self->{'error'}  | 
 
| 
400
 | 
 26  | 
 37  | 
 if (defined $self->{'left_edge'})  | 
 
| 
409
 | 
 2  | 
 26  | 
 if $edge_bd  | 
 
| 
410
 | 
 0  | 
 28  | 
 if $edge_un  | 
 
| 
425
 | 
 0  | 
 780  | 
 if @{$self->{'stack'};} == 0  | 
 
| 
432
 | 
 13  | 
 68  | 
 unless defined $2 or defined $5  | 
 
| 
444
 | 
 0  | 
 780  | 
 if $self->{'error'}  | 
 
| 
448
 | 
 68  | 
 712  | 
 if defined $edge_label  | 
 
| 
450
 | 
 68  | 
 712  | 
 if defined $edge_label  | 
 
| 
477
 | 
 0  | 
 6  | 
 if @{$self->{'stack'};} == 0  | 
 
| 
483
 | 
 0  | 
 0  | 
 unless defined $2 or defined $5  | 
 
| 
493
 | 
 0  | 
 6  | 
 if defined $13 and $13 eq '['  | 
 
| 
494
 | 
 0  | 
 6  | 
 if defined $13 and $13 eq '('  | 
 
| 
497
 | 
 0  | 
 6  | 
 if $self->{'error'}  | 
 
| 
505
 | 
 0  | 
 6  | 
 if $edge_label  | 
 
| 
507
 | 
 0  | 
 6  | 
 if $edge_label  | 
 
| 
518
 | 
 6  | 
 0  | 
 if defined $13 and $13 eq ')'  | 
 
| 
559
 | 
 4  | 
 338  | 
 if ((ref $self || $self) eq 'Graph::Easy::Parser' and $txt =~ m[^(\s*|\s*/\*.*?\*/\s*)(strict)?$o_cmt(di)?graph$o_cmt("[^"]*"|[\w_]+)$o_cmt\{]im || $txt =~ m[^(\s*|\s*/\*.*?\*/\s*)(strict)?${o_cmt}digraph$o_cmt\{]im || $txt =~ m[^(\s*|\s*/\*.*?\*/\s*)strict$o_cmt(di)?graph$o_cmt\{]im)  | 
 
| 
571
 | 
 40  | 
 1  | 
 if (ref $self)  | 
 
| 
578
 | 
 41  | 
 0  | 
 if ref $self  | 
 
| 
581
 | 
 13  | 
 427  | 
 if ((ref $self || $self) eq 'Graph::Easy::Parser' and $txt =~ m[^([\s\n\t]*|\s*/\*.*?\*/\s*)graph\s*:\s*\{]m)  | 
 
| 
589
 | 
 13  | 
 0  | 
 if (ref $self)  | 
 
| 
596
 | 
 13  | 
 0  | 
 if ref $self  | 
 
| 
599
 | 
 8  | 
 432  | 
 unless ref $self  | 
 
| 
603
 | 
 1  | 
 439  | 
 if not defined $txt or $txt =~ /^\s*\z/  | 
 
| 
610
 | 
 1317  | 
 439  | 
 unless $o eq 'graph'  | 
 
| 
635
 | 
 3573  | 
 2329  | 
 if (@lines > 0 and $handled == 0)  | 
 
| 
641
 | 
 2019  | 
 1554  | 
 if $curline =~ /$qr_comment/  | 
 
| 
650
 | 
 0  | 
 3883  | 
 if $self->{'debug'} and $self->{'debug'} > 2  | 
 
| 
651
 | 
 0  | 
 3883  | 
 if $self->{'debug'} and $self->{'debug'} > 2  | 
 
| 
659
 | 
 1254  | 
 18667  | 
 if $line eq ''  | 
 
| 
664
 | 
 0  | 
 18667  | 
 if $self->{'debug'} and $self->{'debug'} > 3  | 
 
| 
666
 | 
 2693  | 
 15974  | 
 if ($line =~ /$pattern/)  | 
 
| 
669
 | 
 0  | 
 2693  | 
 if $self->{'debug'} and $self->{'debug'} > 2  | 
 
| 
671
 | 
 2658  | 
 35  | 
 if defined $handler  | 
 
| 
672
 | 
 2514  | 
 179  | 
 if ($rc)  | 
 
| 
674
 | 
 2509  | 
 5  | 
 unless defined $replace  | 
 
| 
675
 | 
 5  | 
 2509  | 
 if ref $replace  | 
 
| 
676
 | 
 0  | 
 2514  | 
 if $self->{'debug'} and $self->{'debug'} > 2  | 
 
| 
678
 | 
 0  | 
 2514  | 
 if $self->{'debug'} and $self->{'debug'} > 2  | 
 
| 
691
 | 
 12  | 
 3871  | 
 if $handled == 0 and @lines == 0  | 
 
| 
694
 | 
 0  | 
 3871  | 
 if $self->{'error'}  | 
 
| 
697
 | 
 12  | 
 427  | 
 if $backbuffer ne ''  | 
 
| 
700
 | 
 0  | 
 427  | 
 if not $self->{'error'} and $self->{'scope_stack'} and @{$self->{'scope_stack'};} > 0  | 
 
| 
702
 | 
 0  | 
 12  | 
 if $self->{'error'} and $self->{'fatal_errors'}  | 
 
| 
706
 | 
 0  | 
 439  | 
 if $graph->{'debug'}  | 
 
| 
709
 | 
 439  | 
 0  | 
 if $self->can('_parser_cleanup')  | 
 
| 
727
 | 
 2  | 
 784  | 
 if $ed =~ /^(= )+\z/  | 
 
| 
728
 | 
 22  | 
 764  | 
 if $ed =~ /^=+\z/  | 
 
| 
729
 | 
 30  | 
 756  | 
 if $ed =~ /^\.+\z/  | 
 
| 
730
 | 
 7  | 
 779  | 
 if $ed =~ /^(- )+\z/  | 
 
| 
731
 | 
 1  | 
 785  | 
 if $ed =~ /^(..-)+\z/  | 
 
| 
732
 | 
 21  | 
 765  | 
 if $ed =~ /^(\.-)+\z/  | 
 
| 
733
 | 
 4  | 
 782  | 
 if $ed =~ /^\~+\z/  | 
 
| 
734
 | 
 0  | 
 786  | 
 if $ed =~ /^#+\z/  | 
 
| 
761
 | 
 841  | 
 128  | 
 unless ref $e eq 'ARRAY'  | 
 
| 
765
 | 
 969  | 
 128  | 
 if (ref $a) { }  | 
 
| 
773
 | 
 0  | 
 128  | 
 if $self->{'error'}  | 
 
| 
779
 | 
 29  | 
 940  | 
 if $edge_bd  | 
 
| 
780
 | 
 23  | 
 946  | 
 if $edge_un  | 
 
| 
798
 | 
 0  | 
 2286  | 
 unless defined $name  | 
 
| 
804
 | 
 714  | 
 1572  | 
 unless $no_collapse  | 
 
| 
826
 | 
 2  | 
 63  | 
 if (exists $self->{'clusters'}{$base_name})  | 
 
| 
831
 | 
 3  | 
 2  | 
 if $self->{'cluster_id'}  | 
 
| 
832
 | 
 2  | 
 3  | 
 unless exists $self->{'clusters'}{$base_try}  | 
 
| 
835
 | 
 2  | 
 0  | 
 if $self->{'cluster_id'}  | 
 
| 
854
 | 
 0  | 
 2  | 
 if $node->{'autosplit_basename'} eq $new_basename  | 
 
| 
863
 | 
 0  | 
 6  | 
 if $self->{'debug'} > 1  | 
 
| 
886
 | 
 50  | 
 15  | 
 unless defined $allow_empty  | 
 
| 
896
 | 
 17  | 
 48  | 
 if exists $att->{'basename'}  | 
 
| 
905
 | 
 0  | 
 65  | 
 if $graph->{'debug'}  | 
 
| 
920
 | 
 45  | 
 143  | 
 if ($qr_clean)  | 
 
| 
926
 | 
 2  | 
 184  | 
 if ($add == 0 and $remaining eq '' and $sep =~ /\|\|?/)  | 
 
| 
932
 | 
 0  | 
 188  | 
 if $graph->{'debug'}  | 
 
| 
935
 | 
 12  | 
 176  | 
 if ($allow_empty and $part eq ' ') { }  | 
 
| 
 | 
 10  | 
 166  | 
 elsif ($part =~ /^[ ]{2,}\z/) { }  | 
 
| 
953
 | 
 0  | 
 188  | 
 if ($graph->{'debug'})  | 
 
| 
956
 | 
 0  | 
 0  | 
 if $class ne $self->{'use_class'}{'node'}  | 
 
| 
957
 | 
 0  | 
 0  | 
 if $graph->{'debug'}  | 
 
| 
961
 | 
 12  | 
 176  | 
 if ($class =~ /::Empty/)  | 
 
| 
964
 | 
 11  | 
 1  | 
 unless (defined $node)  | 
 
| 
979
 | 
 65  | 
 123  | 
 if (@rc == 1) { }  | 
 
| 
987
 | 
 17  | 
 48  | 
 if defined $att->{'basename'}  | 
 
| 
997
 | 
 16  | 
 107  | 
 if ($last_sep eq '||')  | 
 
| 
1016
 | 
 16  | 
 172  | 
 if ($sep eq '||')  | 
 
| 
1033
 | 
 0  | 
 1900  | 
 if $graph->{'debug'}  | 
 
| 
1042
 | 
 22  | 
 1878  | 
 if ($name =~ /^\s*\z/) { }  | 
 
| 
 | 
 50  | 
 1828  | 
 elsif (ref $self eq 'Graph::Easy::Parser' and $name =~ /[^\\]\|/) { }  | 
 
| 
1044
 | 
 0  | 
 22  | 
 if $graph->{'debug'}  | 
 
| 
1068
 | 
 0  | 
 1828  | 
 if ($self->{'debug'})  | 
 
| 
1070
 | 
 0  | 
 0  | 
 if (not $graph->node($name)) { }  | 
 
| 
1082
 | 
 0  | 
 1900  | 
 if exists $att->{'basename'} and not $autosplit  | 
 
| 
1089
 | 
 94  | 
 1806  | 
 if (defined $stack)  | 
 
| 
1101
 | 
 105  | 
 1888  | 
 if $group  | 
 
| 
1106
 | 
 2  | 
 1898  | 
 if defined $b  | 
 
| 
1244
 | 
 340  | 
 2659  | 
 if ref $object  | 
 
| 
1245
 | 
 1580  | 
 1419  | 
 unless defined $class  | 
 
| 
1254
 | 
 421  | 
 2578  | 
 if $self->can('_match_multi_line_comment')  | 
 
| 
1256
 | 
 421  | 
 2578  | 
 if $self->can('_match_special_attribute')  | 
 
| 
1259
 | 
 2333  | 
 666  | 
 if $text =~ /^\s*\z/  | 
 
| 
1261
 | 
 0  | 
 666  | 
 if $self->{'debug'} > 3  | 
 
| 
1265
 | 
 0  | 
 877  | 
 if $self->{'debug'} > 3  | 
 
| 
1268
 | 
 262  | 
 615  | 
 if $qr_cmt  | 
 
| 
1271
 | 
 1  | 
 876  | 
 if $text =~ /^\s*\z/  | 
 
| 
1277
 | 
 28  | 
 4  | 
 if $done == 0 and $qr_satt and $text =~ s/^$qr_satt//  | 
 
| 
1279
 | 
 4  | 
 872  | 
 if $done == 0  | 
 
| 
1283
 | 
 28  | 
 844  | 
 unless defined $v  | 
 
| 
1289
 | 
 0  | 
 662  | 
 if ($self->{'debug'} and $self->{'debug'} > 1)  | 
 
| 
1296
 | 
 174  | 
 488  | 
 if $self->can('_remap_attributes')  | 
 
| 
1304
 | 
 19  | 
 818  | 
 if defined $rc  | 
 
| 
1306
 | 
 10  | 
 827  | 
 if ref $v eq 'ARRAY'  | 
 
| 
1308
 | 
 818  | 
 19  | 
 if defined $v  | 
 
| 
1311
 | 
 621  | 
 41  | 
 unless wantarray  | 
 
| 
1324
 | 
 1  | 
 2  | 
 if $msg_nr == 1  | 
 
| 
1326
 | 
 1  | 
 2  | 
 if $msg_nr == 2  | 
 
| 
1328
 | 
 1  | 
 2  | 
 if $msg_nr == 3  | 
 
| 
1330
 | 
 0  | 
 3  | 
 if $msg_nr == 4  | 
 
| 
1332
 | 
 0  | 
 3  | 
 if $msg_nr == 5  | 
 
| 
1335
 | 
 0  | 
 3  | 
 if $msg_nr == 6  | 
 
| 
1337
 | 
 0  | 
 3  | 
 if $msg_nr == 7  | 
 
| 
1358
 | 
 50  | 
 1076  | 
 if $n->{'autosplit'}  | 
 
| 
1359
 | 
 0  | 
 1076  | 
 if $n->attribute('offset') ne '0,0' and $n->attribute('origin') eq ''  |