--- trunk/conf/normalize/ff-libri.pl 2008/08/04 19:35:05 1102 +++ trunk/conf/normalize/ff-libri.pl 2008/08/04 19:35:18 1103 @@ -27,7 +27,7 @@ marc_leader('07','m'); -## LDR 17 +## LDR 17 - 3 marc_leader('17','7'); ## LDR 18 @@ -40,16 +40,9 @@ marc_leader('19','a'); } -### 001 - Voyager ID - -### 003 - razjasniti - -### 007 - razjasniti - -marc_fixed('007',00,'ta'); - ### 008 - All materials ## dodati sve moguce slucajeve za datum, popuniti ono sto nedostaje +## ostaviti prazno tamo gdje nema ništa if ( rec('994','c') =~ m/\d{8}/ ) { marc_fixed('008','00', @@ -59,7 +52,9 @@ ); } elsif ( rec('994','c') =~ m/\d{6}/ ) { marc_fixed('008', 00, - '000000' + regex('s/^\d\d//', + rec('994','c') + ), ); marc_fixed('008', '04', '01' @@ -85,23 +80,38 @@ ## 008 06 - Type of date/Publication status ## dodati i ostale mogućnosti ## 008 07-10 - Date 1 - iz 210d koji kroz modify postaje 210c - -my $year = rec('210','c'); +## srediti sve moguće upitne godine if ( rec('210','c') ) { - marc_fixed('008','06','s'); # 06 - Type of date/Publication status, s = single know date - -# warn "## year = $year"; + my $d1; + my $d2; + if ( rec('210','c') =~ m/\?/ ) { + marc_fixed('008','06','q'); + } else { + marc_fixed('008','06','s'); + } + if ( rec('210','c') =~ m/(\d{4})/ ) { + $d1 = $1; + } else { + $d1 = ''; + } + if ( rec('210','c') =~ m/^.*-(\d{4})/ ) { + $d2 = $1; + } else { + $d2 = '', + } + if ( rec('210','c') =~ m/(\d{2})--/ ) { + $d1 = $1.'uu'; + marc_fixed('008','06','u'); + } - if ( $year =~ m/^(\d{4})/ ) { -# warn "## $1 ##\n"; - marc_fixed('008','07',$1); # 07-10 - Date 1 + marc_fixed('008','07',$d1); # 07-10 - Date 1 + marc_fixed('008','11',$d2); # 07-10 - Date 1 } else { marc_fixed('008','06','n'); # 06 - n = unknown date marc_fixed('008','07','uuuu'); } -} ## 008 11-14 - Date 2 @@ -109,40 +119,26 @@ ## 008 15-17 - Place of publication, production, or execution - što ako nema 102? ## raspraviti +marc_fixed('008','15','xx'); + #marc_fixed('008','15', # lc ( rec('102') ) #); -my $zemlja = - lookup( - sub { rec('B') }, - 'kodovi','zemlje', - sub { rec('A') }, - sub { - regex('s/[\s;:]/g', - rec('210','a') - ) - }, - ); - -warn ( - dump ($zemlja) -); - -if ( $year =~ m/^(\d{4})/ ) { - if ( $1 >= 1990 ) { - marc_fixed('008','15', - lc ( $zemlja ) - - ); -# } elsif ( dump( $zemlja ) eq 'hr' ) { -# marc_fixed('008','15','yu'); - } -} +#my $zemlja = +# lookup( +# sub { rec('B') }, +# 'kodovi','zemlje', +# sub { rec('A') }, +# sub { +# regex('s/[\s;:]/g', +# rec('210','a') +# ) +# }, +# ); ## 008 35-37 - Language - marc_fixed('008','35', # first( lc(rec('101')) ) lc( frec('101')) @@ -152,7 +148,6 @@ marc_fixed('008','38','|'); ## 008 39 - Cataloging source - d (other) - marc_fixed('008','39','d'); ### 008 - Books - raspraviti upotrebu ovih polja @@ -192,14 +187,27 @@ ## modify za polje 10 -> drugi ISBN počinje prefixom "ISBN" koji se miče (pr. u sfb) if ( frec('10') ne ( frec('290') ) ) { - marc('020','a', - # isbn_13( + if ( rec('10','a') !~ /pogre/ ) { + marc('020','a', + # isbn_13( + regex('s/\s\s/ /g', + # regex('s/\(\d\)\(/$1 \(//g', + rec('10','a') + ) + # ) + ); + } + if ( rec('10','a') =~ /pogre/ ) { + marc('020','z', regex('s/\s\s/ /g', - # regex('s/\(\d\)\(/$1 \(//g', rec('10','a') ) - # ) - ); + ); + } + marc('020','z', + rec('10','z') + ); + } #warn( @@ -217,8 +225,9 @@ join_with('', # config('input normalize path'), # config('name'), + 'HR-ZaFF ', config(), - ' L', + 'L-', # config('input name'), # id(), # rec('994','a'), @@ -669,30 +678,15 @@ 'a.|i ;|w', # greške 'a ;|v ;|w', - #mozda greska: - 'a ;|v,|x ;|w', - 'a ;|v,|x.|p', - 'a,|x ;|v', - 'a,|x.|p ;|w', - ], - from => "{ a => 1, i => 1, w => 1, \"x\" => 1 }", - to => "{ a => 1, p => 1, v => 1, \"x\" => 1 }", + 'a.|h', + 'a.|h ;|w', + 'a.|h ;|v', + 'h,|i', + 'h ;|v', + 'i ;|w', + 'v', + 'w', - marc_template => [ - 'a', - 'a ;|v', - 'a,|x', - 'a.|n', # mozda greska - 'a.|n,|p', - 'a.|p', - 'a ;|v.|n', - 'a ;|v.|n,|p', # mozda greska - 'n,|p', - 'n ;|v', # mozda greska - 'p ;|v', - 'v', - 'x', - 'x ;|v' # greska ], );