pjcj/Gedcom.pm

full_value handling of CONC on FindMyPast Gedcoms

nigelhorne opened this issue · 0 comments

This is a bug in FMP not in Gedcom, but since they are very unlikely to help I thought it best asking here for help.

In Item.pm there is this code:


sub full_value {
    my $self = shift;
    my $value = $self->{value};
    $value =~ s/[\r\n]+$// if defined $value;
    for my $item (@{$self->_items}) {
        my $v = defined $item->{value} ? $item->{value} : "";
        $v =~ s/[\r\n]+$//;
        $value .= "\n$v" if $item->{tag} eq "CONT";
        $value .=    $v  if $item->{tag} eq "CONC";
    }
    $value
}

The problem is that if a NOTE record (and perhaps others) or CONC record ends with a space, FMP (and perhaps ACOM) strips it which means that words can run on. I don't know how, but somehow it would be great if that could be worked around.

Maybe something horrible such as this:

        $value .= "\n$v" if $item->{tag} eq "CONT";
        $value .= ' '  if(($item->{tag} eq 'CONC') && ($value !~ /\s$/));  # Work around FMP
        $value .=    $v  if $item->{tag} eq "CONC";