sub marc_leader {
my ($offset,$value) = @_;
- if ($offset) {
+ if ( defined $offset && defined $value ) {
$marc_leader->[ $marc_record_offset ]->{ $offset } = $value;
} else {
my $r = $rec->{$from};
die "record field $from isn't array ",dump( $rec ) unless (ref($r) eq 'ARRAY');
- my ($i1,$i2) = _get_marc_indicators( $to );
warn "## marc_original_order($to,$from) source = ", dump( $r ),$/ if ($debug > 1);
foreach my $d (@$r) {
if ( ! ref($d) ) {
# scalar
- warn "## marc_original_order($to,$from) skipped: ",dump( $d );
+ if ( $to eq 'leader' ) {
+ marc_leader( 0, $d );
+ } elsif ( $to < 100 ) {
+ marc_fixed( $to, 0, $d );
+ } else {
+ warn "## marc_original_order($to,$from) skipped: ",dump( $d );
+ }
next;
}
warn "#--> d: ",dump($d), "\n#--> sfs: ",dump(@sfs),$/ if ($debug > 2);
+ my ($i1,$i2) = _get_marc_indicators( $from );
+ $i1 = $d->{i1} if exists $d->{i1};
+ $i2 = $d->{i2} if exists $d->{i2};
+
my $m = [ $to, $i1, $i2 ];
while (my $sf = shift @sfs) {
sub marc_clone {
warn "### marc_clone rec: ",dump( $rec ) if $debug > 2;
- foreach my $f ( keys %$rec ) {
+ foreach my $f ( sort keys %$rec ) {
warn "## marc_clone $f\n" if $debug;
marc_original_order( $f, $f );
}
use strict;
use lib 'lib';
-use Test::More tests => 330;
+use Test::More tests => 331;
BEGIN {
use_ok( 'WebPAC::Test' );
ok(my $marc = WebPAC::Normalize::MARC::_get_marc_fields(), "_get_marc_fields");
# diag "rec = ",dump( $rec );
-# diag "marc = ",dump( $marc );
-# diag "expect = ",dump( $marc );
+ diag "marc = ",dump( $marc );
+ diag "expect = ",dump( $expect );
is_deeply( $marc, $expect, 'marc_clone same' );
+diag "marc_leader = ",dump( marc_leader );
+ cmp_ok( WebPAC::Normalize::MARC::marc_leader()->{0}, 'eq', $rec->{leader}->[0], 'leader' );
}
-my $rec = {
- "000" => [2, 2],
- "001" => ["ocm00734950 "],
+$rec = {
+ "000" => [2],
+ "001" => ["ocm00734950"],
"003" => ["OCoLC"],
- "005" => ["19830824185243.0"],
- "008" => ["731105s1962 nyua a 00000 eng "],
- "010" => [
- { a => " 62015770 ", i1 => " ", i2 => " ", subfields => ["a", 0] },
- ],
"040" => [
{
a => "DLC",
c => "BOS",
d => "TML",
- i1 => " ",
- i2 => " ",
- subfields => ["a", 0, "c", 0, "d", 0, "d", 1, "d", 2],
- },
- ],
- "041" => [{ a => "engfre", i1 => 1, i2 => " ", subfields => ["a", 0] }],
- "049" => [{ a => "TMLM", i1 => " ", i2 => " ", subfields => ["a", 0] }],
- "050" => [
- {
- a => "RC340",
- b => ".P513 1806a",
- i1 => 0,
- i2 => " ",
- subfields => ["a", 0, "b", 0],
- },
- ],
- "096" => [
- { a => "WM 11 P653t 1962", i1 => " ", i2 => " ", subfields => ["a", 0] },
- ],
- 100 => [
- {
- a => "Pinel, Philippe,",
- d => "1745-1826.",
- i1 => 1,
- i2 => 0,
- subfields => ["a", 0, "d", 0],
+ i1 => "1",
+ i2 => "2",
+ subfields => ["a", 0, "c", 0, "d", 0],
},
],
245 => [
a => "A treatise on insanity /",
c => "translated from the French by D. D. Davis, with an introd. by Paul F. Cranefield.",
subfields => [1, 0, "a", 0, "c", 0],
- },
- ],
- 260 => [
- {
- a => "New York :",
- b => "Published under the auspices of the Library of the New York Academy of Medicine by Hafner Pub. Co.,",
- c => "1962.",
- i1 => 0,
- i2 => " ",
- subfields => ["a", 0, "b", 0, "c", 0],
- },
- ],
- 300 => [
- {
- a => "lv, 288 p. :",
- b => "ill. ;",
- c => "21 cm.",
- i1 => " ",
- i2 => " ",
- subfields => ["a", 0, "b", 0, "c", 0],
- },
- ],
- 440 => [
- {
- a => "History of medicine ;",
- i1 => " ",
- i2 => 0,
- subfields => ["a", 0, "v", 0],
- v => "no. 14",
- },
- ],
- 500 => [
- {
- a => "\"Facsimile of the London 1806 edition.\"",
- i1 => " ",
- i2 => " ",
- subfields => ["a", 0],
- },
- {
- a => "Translation of: Traite medico-philosophique sur l'alienation mentale.",
- i1 => " ",
- i2 => " ",
- subfields => ["a", 0],
- },
- ],
- 590 => [
- {
- a => "L21942,WM ,purc, 10.00,rtr,1-78",
- i1 => " ",
- i2 => " ",
- subfields => ["a", 0],
- },
- ],
- 650 => [
- { " " => 2, a => "Psychiatry", subfields => [" ", 0, "a", 0] },
- { " " => 2, a => "Mental Disorders", subfields => [" ", 0, "a", 0] },
- ],
- 852 => [
- {
- 8 => ".1",
- 9 => "`;11623`07/02/1991 08:09````````````````B^61^R04CZ4^^^^1^101^1^1000^^`1^11623^54969,29361^^`2^0^0^2^0^1^0^4`",
- b => "LU GENCOL",
- d => "TWO WEEKS",
- h => "WM 11 P653t 1962",
- i => 43,
- i1 => " ",
- i2 => " ",
- o => "available",
- p => "R04CZ4",
- subfields => [8, 0, "b", 0, "h", 0, "t", 0, "p", 0, "i", 0, "d", 0, "o", 0, 9, 0],
- t => 1,
- },
- ],
- 911 => [{ a => 61, i1 => " ", i2 => " ", subfields => ["a", 0] }],
- 979 => [
- {
- a => "USERS",
- b => 19831011,
- c => "TAPE",
- d => "ARCH",
- i1 => " ",
- i2 => " ",
- subfields => ["a", 0, "b", 0, "c", 0, "d", 0],
+ i1 => '0',
+ i2 => '1',
},
],
leader => ["01237cam 2200301Ii 4500"],
};
test_marc_clone( $rec, [
- [900, " ", " ", "a", "900a", "b", "900b"],
- [901, " ", " ", "c", "901c"],
+ ["000", 2],
+ ["001", "ocm00734950"],
+ ["003", "OCoLC"],
+ ["040", 1,2, "a" => "DLC", "c" => "BOS", "d" => "TML"],
+ [ 245, 0,1, 1 => 2, "a" => "A treatise on insanity /", "c" => "translated from the French by D. D. Davis, with an introd. by Paul F. Cranefield." ],
] );