--- trunk/conf/normalize/ff-libri.pl 2006/11/03 20:41:12 773 +++ trunk/conf/normalize/ff-libri.pl 2006/12/06 23:42:20 783 @@ -44,13 +44,15 @@ ); -# u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - ' +# FFSF - nekoliko zaredanih ISBN, odvojenih s '. - ' +# drugi ISBN počinje prefixom ISBN marc('020','a', - rec('10') + regex('s/ ISBN //g', + rec('10') + ) ); - # u polje 040a - prefiks HR ? # NSK ima HR NSB (možda u novijim zapisima ima NSK?) @@ -74,19 +76,29 @@ ## naći primjer u NSK +#_debug(2); marc_repeatable_subfield('041','a', rec('101') ); +#_debug(0); # indikatori za članove. treba uvjetovati prema jezicima !! +marc_indicators('245', 0, 0); + if ( ( rec('200','a') =~ m/^Die /) || ( rec('200','a') =~ m/^Das /) || ( rec('200','a') =~ m/^The /) ) { marc_indicators('245', 0, 4); -} else { - marc_indicators('245', 0, 0); -} +} + +if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) + { + marc_indicators('245', 0, 2); +} + + + #_debug(3); @@ -100,7 +112,7 @@ '.', rec('200','a') ), - 'h', rec('200','b'), +# 'h', rec('200','b'), 'b', suffix( ( rec('200','k') && rec('200','f') ) ? ' / ' : ' ', @@ -121,16 +133,27 @@ ), ), -# ovo trenutno radi za slučaj kad f nije ponovljivo i kad uvijek postoje c i f u paru !!! - 'c', join_with('. ', - rec('200','f'), - rec('200','c'), - ), -# FIXME append to last subfield -# '+', prefix('. ', rec('200','c') ), + 'c', rec('200','f'), + +# append to last subfield + '+', prefix('. ', rec('200','c') ), ); +#marc('440','a', +# suffix( +# rec('225','e') ? ' : ' : +# rec('225','v') ? ' ; ' : +# '. ', +# rec('225','a'), +# ) +#); + + + + + + #_debug(0); marc('250','a', @@ -155,9 +178,9 @@ marc('300','a', suffix( - rec('215','c') ? ' : ' : - rec('215','d') ? ' ; ' : - rec('215','e') ? ' + ' : + rec('215','c') ? ' : ' : + rec('215','d') ? ' ; ' : + rec('215','e') ? ' + ' : ' ', rec('215','a') ) @@ -165,8 +188,8 @@ marc('300','b', suffix( - ( rec('215','c') && rec('215','d') ) ? ' ; ' : - ( rec('215','c') && rec('215','e') ) ? ' + ' : + ( rec('215','c') && rec('215','d') ) ? ' ; ' : + ( rec('215','c') && rec('215','e') ) ? ' + ' : ' ', rec('215','c') ) @@ -187,24 +210,16 @@ # provjeriti -marc_indicators('490', 0, ' '); - -marc('490','a', - rec('225','a') -); - -marc('490','v', - join_with(', ', - rec('225','v'), - rec('225','w') - ), -); +marc_indicators('440', ' ', '0'); -marc('490','x', - rec('225','x') +marc('440','a', + join_with(' / ', + rec('225','a'), + rec('225','f') + ) ); -#marc('490','a', +#marc('440','a', # join_with(' : ', # rec('225','a'), # join_with(" = ", @@ -217,6 +232,25 @@ # ) #); +marc('440','h', + rec('225','h') +); + +marc('440','p', + rec('225','i') +); + +marc('440','v', + join_with(', ', + rec('225','v'), + rec('225','w') + ), +); + +marc('440','x', + rec('225','x') +); + #marc('490','v', # join2_with(225, 'v', ' , ', 225,'w'); # join_with(', ', @@ -467,20 +501,22 @@ marc_indicators('740', 0, ' '); -if ( ! rec('464') ) { -marc('740','a', - rec('200','c') -); +# if ( ! rec('464') ) { +# marc('740','a', +# rec('200','c') +# ); -marc('740','a', - rec('200','k') -); +# marc('740','a', +# rec('200','k') +# ); -} else { -marc('740','a', - rec('464','a') -); -}; +# } else { + + marc('740','a', + rec('464','a') + ); + +# }; @@ -584,8 +620,8 @@ rec('260') ); - marc_remove('490'); - marc('490','a', + marc_remove('440'); + marc('440','a', rec('270') ); @@ -618,26 +654,57 @@ }; +my $nak_cj = get( rec('225','a') ); + +if ($nak_cj) { + +marc('760','w', + $nak_cj +); + +} + marc_indicators('776', 0, ' '); marc('776','a', rec('452','1') ); -marc('900','a', - lookup( - sub { rec('000') }, - 'ffps','libri', - sub { rec('200','a') }, - ) -); +#marc('900','a', +# lookup( +# sub { rec('000') }, +# 'ffps','libri', +# sub { rec('200','a') . rec('200','f') . rec('205') }, +# ) +#); + +#marc('901','a', +# lookup( +# sub { 'NSK: ' . rec('200','a') }, +# 'nsk','baza', +# sub { rec('200','a') }, +# sub { rec('10') } +# ) +#); + +if ( ! rec('464') && rec('200','c') ) { + marc('003','a', + 'ima-200c-nema-464' + ); +} + +if ( ! rec('464') && rec('200','k') ) { + marc('005','a', + 'ima-200k-nema-464' + ); +} + +if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) { + marc('006','a', + 'ima-464-nema-200c-ili-200k' + ); +} + -marc('901','a', - lookup( - sub { 'NSK' }, - 'nsk','baza', - sub { rec('200','a') }, - ) -); }