--- trunk/lib/WebPAC/Normalize.pm 2006/07/30 14:23:23 605 +++ trunk/lib/WebPAC/Normalize.pm 2006/08/23 14:29:43 616 @@ -36,11 +36,11 @@ =head1 VERSION -Version 0.15 +Version 0.16 =cut -our $VERSION = '0.15'; +our $VERSION = '0.16'; =head1 SYNOPSIS @@ -646,29 +646,36 @@ Copy all subfields preserving original order to marc field. - marc_original_order(210, 260); + marc_original_order( marc_field_number, original_input_field_number ); + +Please note that field numbers are consistent with other commands (marc +field number first), but somewhat counter-intuitive (destination and then +source). You might want to use this command if you are just renaming subfields or using pre-processing modify_record in C and don't need any post-processing or want to preserve order of original subfields. + =cut sub marc_original_order { - my ($from, $to) = @_; + my ($to, $from) = @_; die "marc_original_order needs from and to fields\n" unless ($from && $to); - my $r = $rec->{$from} || return; + return unless defined($rec->{$from}); + + my $r = $rec->{$from}; die "record field $from isn't array\n" unless (ref($r) eq 'ARRAY'); my ($i1,$i2) = defined($marc_indicators->{$to}) ? @{ $marc_indicators->{$to} } : (' ',' '); - warn "## marc_original_order($from,$to) source = ", dump( $r ),$/ if ($debug > 1); + warn "## marc_original_order($to,$from) source = ", dump( $r ),$/ if ($debug > 1); foreach my $d (@$r) { if (! defined($d->{subfields}) && ref($d->{subfields}) ne 'ARRAY') { - warn "# marc_original_order($from,$to): field $from doesn't have subfields specification\n"; + warn "# marc_original_order($to,$from): field $from doesn't have subfields specification\n"; next; }