line |
true |
false |
branch |
32
|
8 |
9321 |
if $self->{'file'} and $self->{'file'} ne '*' |
40
|
0 |
0 |
if exists $self->{$key} |
50
|
0 |
0 |
if exists $self->{$key} |
61
|
0 |
8 |
unless open $fh, $self->{'file'} |
67
|
0 |
8 |
if ($line1 =~ /^\xEF\xBB\xBF/) { } |
72
|
8 |
62 |
if (my($char) = /\s*1\s+CHAR\s+(.*?)\s*$/i) |
73
|
0 |
8 |
$char =~ /utf\W*8/i ? : |
80
|
7 |
1 |
if $self->{'gedcom'} |
81
|
0 |
8 |
if ($encoding eq 'utf-8' and $] >= 5.8) { } |
92
|
0 |
8 |
$bom ? : |
101
|
0 |
8 |
if $callback and not &$callback($title, $txt1, "Record $count", tell $fh, $size) |
104
|
7 |
1 |
$self->{'grammar'} ? : |
108
|
1 |
1 |
if ($self->{'gedcom'}{'read_only'} and defined($gf = -M $self->{'file'}) and defined($gc = -M $if) and $gc < $gf) |
111
|
0 |
1 |
if (not open(I, $if)) { } |
127
|
144 |
2 |
if length $vals[1] |
128
|
2 |
144 |
if length $vals[2] |
130
|
140 |
6 |
if $class |
133
|
0 |
1 |
unless close I |
137
|
7 |
1 |
unless (@{$self->{'items'};}) |
144
|
876 |
29 |
if ($self->{'grammar'}) { } |
148
|
876 |
0 |
if (@g) { } |
153
|
0 |
0 |
unless defined $tag and length $tag |
166
|
0 |
905 |
if ref $item and $callback and not &$callback($title, $txt1, "Record $count line " . $item->{'line'}, tell $fh, $size) |
176
|
1 |
1 |
if ($self->{'gedcom'}{'read_only'} and defined $gf and !defined($gc) || $gc > $gf) |
178
|
0 |
1 |
if (not open(I, ">$if")) { } |
182
|
146 |
584 |
unless $item->{$_} |
186
|
0 |
1 |
unless close I |
197
|
2378 |
10998 |
if (not $parse and $item->{'level'} >= 0 and $self->{'gedcom'}{'read_only'} and $self->{'gedcom'}{'grammar'}) { } |
204
|
3110 |
0 |
if ($parse and $self->{'gedcom'}{'read_only'} and $self->{'gedcom'}{'grammar'}) |
206
|
3110 |
0 |
if (defined $item->{'cpos'}) |
213
|
73 |
8389 |
unless (ref $next) |
220
|
200 |
8189 |
if (not defined $next_level or $next_level <= $level) { } |
225
|
0 |
8189 |
if $next_level > $level + 1 |
231
|
7688 |
3110 |
unless $item->{'gedcom'}{'read_only'} |
245
|
4079 |
443 |
if (my($lev) = $l =~ /^\s*(\d+)/) |
246
|
2377 |
1702 |
if ($lev <= $level) |
265
|
200 |
19972 |
if ($rec = $self->{'stored_item'}) { } |
|
18783 |
1189 |
elsif (not $rec && $rec->{'level'} and my $line = $self->next_text_line) { } |
271
|
29 |
18754 |
if (my($structure) = $line =~ /^\s*(\w+): =\s*$/) { } |
|
18681 |
73 |
elsif (my($level, $xref, $tag, $value, $space, $min, $max, $star) = $line =~ /^\s* # optional whitespace at start
((?:\+?\d+)|n) # start level
\s* # optional whitespace
(?: # xref
(\@.*>?@) # text in @>?@
\s+ # whitespace
)? # optional
(?: # tag
(?!<<) # don't match a type
([\w\s\[\]\|<>]+?) # non greedy
\s+ # whitespace
)? # optional
(?: # value
( #
(?: # one of
\@?.*?\s*>?\@? # text element - non greedy
| # or
\[\s* # start list
(?: #
\@?<.*>\@? # text element
\s*\|?\s* # optionally delimited
)+ # one or more
\] # end list
) #
) #
(\s+) # whitespace
)?? # optional - non greedy
(?: # value
\{ # open brace
(\d+) # min
: # :
(\d+|M) # max
\*? # optional *
[\}\]] # close brace or bracket
)? # optional
(\*?\s*) # optional * and ws at end
$/x) { } |
|
73 |
0 |
elsif ($line =~ m(^\s*[\[\|\]]\s*(?:/\*.*\*/\s*)?$)) { } |
330
|
9065 |
9616 |
if ($level eq 'n' or $level > $item->{'level'}) { } |
331
|
9065 |
0 |
unless ($rec) |
334
|
8688 |
377 |
if $self->{'gedcom'}{'grammar'} |
336
|
95 |
8970 |
$level eq 'n' ? : |
|
9065 |
0 |
if defined $level |
337
|
872 |
0 |
$xref =~ /^\@(.+)\@$/ ? : |
|
872 |
8193 |
if defined $xref |
339
|
8942 |
123 |
if defined $tag |
340
|
6697 |
319 |
if defined $space and $self->{'grammar'} |
341
|
8688 |
377 |
if defined $star and $self->{'grammar'} |
342
|
9007 |
58 |
if defined $value |
344
|
1822 |
7185 |
($rec->{'pointer'} = $value =~ /^\@(.+)\@$/) ? : |
|
9007 |
58 |
if defined $value |
348
|
377 |
8688 |
if defined $min |
349
|
377 |
8688 |
if defined $max |
368
|
9094 |
200 |
if $rec and defined $rec->{'level'} and $rec->{'level'} > $item->{'level'} |
392
|
0 |
7640 |
$flush ? : |
|
7640 |
7 |
unless $level < 0 |
394
|
872 |
6775 |
if defined $self->{'xref'} and length $self->{'xref'} |
395
|
7640 |
7 |
if $level >= 0 |
401
|
1028 |
4259 |
$self->resolve_xref($self->{'value'}) ? : |
|
516 |
5287 |
ref $self->{'value'} ? : |
|
5803 |
1844 |
if defined $self->{'value'} and length $self->{'value'} |
403
|
7640 |
7 |
unless $level < 0 |
407
|
879 |
6761 |
if $level < 0 and $c < @{$self->{'items'};} - 1 |
415
|
0 |
0 |
if $self->{'tag'} and $self->{'tag'} =~ /^(CON[CT]|TRLR)$/ |
420
|
0 |
0 |
unless $level |
428
|
0 |
0 |
ref $self->{'value'} ? : |
|
0 |
0 |
$self->{'value'} ? : |
430
|
0 |
0 |
if defined $value |
435
|
0 |
0 |
if ($tag) |
440
|
0 |
0 |
$events && defined $self->{'gedcom'}{'types'}{$self->{'tag'}} && $self->{'gedcom'}{'types'}{$self->{'tag'}} eq 'Event' ? : |
442
|
0 |
0 |
if $tag eq 'GEDCOM' |
447
|
0 |
0 |
if ($tag eq 'EVEN') { } |
|
0 |
0 |
elsif ($tag =~ /^(FAM[SC]|HUSB|WIFE|CHIL|SUBM|NOTE)$/ and defined $value and $self->resolve_xref($self->{'value'})) { } |
|
0 |
0 |
elsif ($self->{'xref'}) { } |
454
|
0 |
0 |
unless $sub_items |
459
|
0 |
0 |
unless defined $value or $tag |
464
|
0 |
0 |
if $sub_items or not $spaced and !(defined $value || $tag) || $tag eq 'EVEN' || $self->{'xref'} |
467
|
0 |
0 |
if (defined $value) |
468
|
0 |
0 |
if $spaced or $sub_items |
470
|
0 |
0 |
if $spaced or $sub_items |
479
|
0 |
0 |
if ($tag) |
480
|
0 |
0 |
if $spaced or $sub_items |
488
|
0 |
0 |
if defined $self->{$v} |
496
|
55859 |
10077 |
if (wantarray and not $count) { } |
499
|
10075 |
2 |
unless $count |
501
|
10077 |
490 |
if $c->{'tag'} eq $tag and not --$count |
530
|
1 |
7 |
if $i eq "$_" |
541
|
0 |
1 |
unless $parent |
552
|
3 |
13 |
if $i eq "$_" |
556
|
0 |
3 |
unless $n < @{$self->{'items'};} |
560
|
2 |
1 |
if defined $item->{'xref'} |
569
|
8 |
31211 |
if @_ |
577
|
66527 |
0 |
if defined $value |
579
|
164 |
0 |
defined $item->{'value'} ? : |
581
|
24 |
140 |
if $item->{'tag'} eq 'CONT' |
582
|
12 |
152 |
if $item->{'tag'} eq 'CONC' |
590
|
4282 |
235132 |
if not defined $self->{'_items'} and $self->{'level'} >= 0 |