X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=Equinox-Migration%2Flib%2FEquinox%2FMigration%2FMapDrivenMARCXMLProc.pm;h=77a96dc535a6e5ee3b8ed58044938ec126ba8503;hp=b98a7ff6d10215d96561db8f6be87ed0d79519f2;hb=f066013ab0a65299aaddf1466c438585e95ee2bf;hpb=5a0ffda818989fddf5c3315d00c87fdf348cae92 diff --git a/Equinox-Migration/lib/Equinox/Migration/MapDrivenMARCXMLProc.pm b/Equinox-Migration/lib/Equinox/Migration/MapDrivenMARCXMLProc.pm index b98a7ff..77a96dc 100644 --- a/Equinox-Migration/lib/Equinox/Migration/MapDrivenMARCXMLProc.pm +++ b/Equinox-Migration/lib/Equinox/Migration/MapDrivenMARCXMLProc.pm @@ -94,6 +94,22 @@ sub parse_record { for my $f (@fields) { process_field($f, $crec) } + # fill in blank values if needed + for my $mappedtag ( @{ $sfmap->tags }) { + unless (exists $crec->{tmap}{$mappedtag}) { + push @{ $crec->{tags} }, {}; + for my $mappedsub ( @{ $sfmap->subfields($mappedtag) } ) { + my $fieldname = $sfmap->field($mappedtag, $mappedsub); + my $mods = $sfmap->mods($fieldname); + next if $mods->{multi}; + $crec->{tags}[-1]{uni}{$mappedsub} = ''; + $crec->{tags}[-1]{multi} = undef; + $crec->{tags}[-1]{tag} = $mappedtag; + } + push @{ $crec->{tmap}{$mappedtag} }, $#{ $crec->{tags} }; + } + } + # cleanup memory and increment pointer $record->purge; $reccount++; @@ -137,10 +153,6 @@ sub process_field { $crec->{tags}[-1]{uni}{$mappedsub} = '' unless defined $crec->{tags}[-1]{uni}{$mappedsub}; } - for my $mappedtag ( @{ $sfmap->tags }) { - $crec->{tmap}{$mappedtag} = undef - unless defined $crec->{tmap}{$mappedtag}; - } } }