--- trunk/conf/normalize/ff-libri.pl 2007/02/15 22:43:03 802 +++ trunk/conf/normalize/ff-libri.pl 2007/05/18 20:27:21 824 @@ -29,8 +29,39 @@ ### 001 - Voyager +### 007 + +marc_fixed('007',00,'ta'); + ### 008 +if ( rec('994','c') ) { + marc_fixed('008','00', + regex('s/^\d\d//', + rec('994','c') + ), + ); +} else { + marc_fixed('008', 00, + '000101' + ); +} + +#warn( dump( +# regex('s/^\d\d//', +# rec('994','c') +# ), +#) +#); + +## FIXME treba velika slova pretvoriti u mala + +marc_fixed('008','35', + first( lc(rec('101')) ) +); + + + ### 035$6 # Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku. # marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako? @@ -38,7 +69,7 @@ marc('035','6', -join_with(' ', +join_with('', # config('input normalize path'), # config('name'), config(), @@ -80,7 +111,7 @@ ### 041 indikatori # pretpostavke o indikatorima: # -# 1. Ako postoji polje 300 i prvo pojavljivanje tog polja sadrži /Prijevod/ , i1 = 1 +# 1. Ako postoji polje 300 i ono sadrži /Prijevod/ ili /Izv. stv. nasl./, i1 = 1 # (Da li je napomena uvijek pisana?) # # 2. Podatak o prevodiocu u 200g. Problem: različiti oblici riječi, različiti jezici. @@ -89,10 +120,11 @@ # (ako postoje zagrade pr. 94(=411.16) onda su to pomoćne oznake) # pr. 821.111-2=163.42 je prijevod engleske drame na HR. # to ima samo za književna djela, eseje.... +# ???? -if ( rec('675') =~ m/\d=\d/ ) { -#if ( first(rec('300')) =~ m/Prijevod/ || first(rec('300')) =~ m/Izv. stv. nasl./ ) { +#if ( rec('675') =~ m/\d=\d/ ) { +if ( grep( m/Prijevod/, rec('300')) || grep( m/Izv. stv. nasl./, rec('300') ) ) { marc_indicators('041', 1, ' '); } else { marc_indicators('041', 0, ' '); @@ -110,7 +142,7 @@ ### 080 -# 675 podpolja c, d ... - što s njima ??? +# 675 podpolja b, c, d ... - što s njima ??? marc('080','a', rec('675','a') @@ -130,7 +162,12 @@ ### 100 # I1 = 0 ako je pseudonim (ima 700a, nema 700b) -marc_indicators('100', 1, ' '); +if ( rec('700','a') && ! rec('700','b') ) { + marc_indicators('100', 0, ' '); +} else { + marc_indicators('100', 1, ' '); +} + marc('100','a', join_with(', ', rec('700', 'a'), @@ -171,84 +208,120 @@ ### 245 indikatori -# i1 = 1 za sve zapise +# i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710 # i2 = pretpostavlja se na temelju člana na početku naslova i jezika # treba nadopuniti i dati podatke na verifikaciju knjižničarima -marc_indicators('245', 1, 0); +my $i1; + +if ( rec('700') || rec('710') ) { + $i1 = 1; + +} else { + $i1 = 0; +} + +marc_indicators('245', $i1, 0); if ( ( rec('200','a') =~ m/^Die /) || ( rec('200','a') =~ m/^Das /) || + ( rec('200','a') =~ m/^Der /) || ( rec('200','a') =~ m/^The /) ) { - marc_indicators('245', 1, 4); + marc_indicators('245', $i1, 4); +} + +if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) { + marc_indicators('245', $i1, 2); } -if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) - { - marc_indicators('245', 1, 2); +if ( ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) { + marc_indicators('245', $i1, 2); } ### 245 -# redoslijed polja +# redoslijed polja važan +# podpolja i interpunkcije pripremljeni u modify #_debug(3); + marc_compose('245', 'a', suffix( - rec('200','b') ? '. ' : - rec('200','k') ? ' ; ' : - rec('200','d') ? ' = ' : - rec('200','e') ? ' : ' : - rec('200','f') ? ' / ' : - '.', - rec('200','a') + ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' : + ( rec('200','p') && rec('200','c') ) ? ' : ' : + '', + rec('200','a'), ), -# 'h', rec('200','b'), 'b', suffix( - ( rec('200','k') && rec('200','f') ) ? ' / ' : - ' ', - join_with(' ; ', - rec('200','k'), - ), + ( rec('200','p') && rec('200','f') ) ? ' / ' : + ( rec('200','p') && rec('200','c') ) ? '. ' : + '', + rec('200','p'), ), - 'b', suffix( - ( rec('200','d') && rec('200','f') ) ? ' / ' : - ' ', - rec('200','d'), - ), - 'b', suffix( - ( rec('200','e') && rec('200','f') ) ? ' / ' : - ' ', - join_with(' : ', - rec('200','e'), - ), + 'c', suffix( + ( rec('200','f') && rec('200','c') ) ? '. ' : + '', + rec('200','f'), ), + '+', rec('200','c'), +); - 'c', rec('200','f'), +#_debug(0); -# append to last subfield - '+', prefix('. ', - rec('200','c') - ), -); +#marc_compose('245', +# 'a', suffix( +# rec('200','b') ? '. ' : +# rec('200','k') ? ' ; ' : +# rec('200','d') ? ' = ' : +# rec('200','e') ? ' : ' : +# rec('200','f') ? ' / ' : +# '.', +# rec('200','a') +# ), +## 'h', rec('200','b'), +# 'b', suffix( +# ( rec('200','k') && rec('200','f') ) ? ' / ' : +# ' ', +# join_with(' ; ', +# rec('200','k'), +# ), +# ), +# 'b', suffix( +# ( rec('200','d') && rec('200','f') ) ? ' / ' : +# ' ', +# rec('200','d'), +# ), +# 'b', suffix( +# ( rec('200','e') && rec('200','f') ) ? ' / ' : +# ' ', +# join_with(' : ', +# rec('200','e'), +# ), +# ), +# 'c', rec('200','f'), +### append to last subfield +# '+', prefix('. ', +# rec('200','c') +# ), +#); -#_debug(0); ### 250 -marc('250','a', - suffix( - rec('205','f') ? ' / ' : - ' '. +marc_compose('250', + 'a',suffix( + rec('205','f') ? ' / ' : + ' ', rec('205','a') - ) + ), + 'b', rec('205','f'), ); -marc('250','b', - rec('205','f') -); +#marc('250','b', +# rec('205','f') +#); ### 260 @@ -274,7 +347,7 @@ suffix( ( rec('215','c') && rec('215','d') ) ? ' ; ' : ( rec('215','c') && rec('215','e') ) ? ' + ' : - ' ', + ' ', rec('215','c') ) ); @@ -297,15 +370,37 @@ marc_indicators('440', ' ', '0'); -marc('440','a', - join_with(' : ', - rec('225','a'), - join_with(' / ', - rec('225','e'), - rec('225','f') - ) - ) -) ; +if ( ( rec('225','a') =~ m/^Die /) || + ( rec('225','a') =~ m/^Das /) || + ( rec('225','a') =~ m/^The /) ) { + marc_indicators('440', ' ', 4); +} + +if ( ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) { + marc_indicators('440', ' ', 2); +} + +if ( ( rec('225','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) { + marc_indicators('440', ' ', 2); +} + +#_debug(3); + +marc('440', + 'a', suffix( rec('225','f'), + rec('225','a'), + ), +); + +# join_with(' / ', +# join_with(' ', +# rec('225','a'), +# rec('225','p'), +# ), +# rec('225','f') +# ), + +#_debug(0); marc('440','n', rec('225','h') @@ -316,20 +411,13 @@ ); marc('440','v', - join_with(', ', - rec('225','v'), - rec('225','w') - ), + rec('225','v'), ); marc('440','x', rec('225','x') ); -marc('440','a', - rec('225','b'), -); - ### 490 # @@ -338,7 +426,7 @@ #); -### 500 +### 50x marc('500','a', rec('300') @@ -382,6 +470,15 @@ ); } +if ( config() =~ m/ffan/ ) { + marc_indicators('505', '0', ' '); + marc('505','a', + regex('s/[<>]//g', + rec('330') + ) +); +} + ## napomene uz konverziju polja 330: @@ -400,15 +497,15 @@ ); } -# FFTU 330 - ??? -if ( config() =~ m/fftu/ ) { - marc('520','a', - rec('330') - ); -} +### 526 - STUDY PROGRAM INFORMATION NOTE + +marc_indicators('526', 8, ' '); +marc('526','a', + rec('996') +); -### 538 +### 538 - zahtjevi sustava marc('538','a', rec('337','a') @@ -549,9 +646,9 @@ # rec('200','c') # ); - marc('740','a', - rec('200','k') - ); +marc('740','a', + rec('200','k') +); # } else { @@ -563,6 +660,34 @@ ### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim +if ( + rec('225','a') # da li je nakladnicka cjelina? +) { + +my $series_key = +join_with('', + rec('225','a'), + rec('210','a'), + rec('210','b'), +); + +my $series = get( $series_key ); + +if ($series) { + warn "nije novi"; +} else { + + +$series = join_with('', + config(), + 'LS', + rec('000') +); + +set( $series_key => $series ); + +} +} my $series_key = join_with('', rec('225','a'), @@ -577,9 +702,7 @@ marc('760','w', get( $series_key ) ); - } - ### testing # # my $dup_key = join_with('', @@ -601,43 +724,47 @@ # +## 852 - lokacija -################################## -## ## -## pomoćni ispisi - privremeno! ## -## ## -################################## - -if ( ! rec('464') && rec('200','c') ) { - marc('002', - 'ima-200c-nema-464' - ); -} +marc_indicators('852', 4, ' '); -if ( ! rec('464') && rec('200','k') ) { - marc('003', - 'ima-200k-nema-464' - ); -} +marc('852','j', + join_with(' ', + rec('990') + ) +); -if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) { - marc('004', - 'ima-464-nema-200c-ili-200k' - ); -} +## 876 - item information - basic bibliographic unit +marc('876','a', + rec('991'), +); +## 886 - former marc -#_debug(2); +marc_indicators('886', 2, ' '); -if ( rec('200') =~ m/prev/ ) { - marc('005', - 'prijevod' - ); -} +marc('886','2', + 'ffmarc' +); -#_debug(0); +marc('886','a', + '994' +); +marc('886','b', + join_with(''. + '##^a', + join_with('', + prefix('^a', + rec('994','a'), + ), + prefix('^b', + rec('994','b') + ) + ) + ) +); } # polje 200a