--- trunk/conf/normalize/ff-libri.pl 2007/05/25 19:48:02 842 +++ trunk/conf/normalize/ff-libri.pl 2007/08/23 19:21:23 876 @@ -24,13 +24,18 @@ marc_leader('07','m'); marc_leader('18','i'); +# pojasniti upotrebu 19 lidera! + if ( rec('230') ) { marc_leader('19','r'); } ### 001 - Voyager +### Pojasniti upotrebu polja 006 + ### 007 +### pojasniti upotrebu polja marc_fixed('007',00,'ta'); @@ -55,26 +60,33 @@ #) #); -## FIXME treba velika slova pretvoriti u mala marc_fixed('008','35', first( lc(rec('101')) ) ); +### 020 +# postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb) + +marc('020','a', + regex('s/ ISBN //g', + rec('10') + ) +); + ### 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? +# marc 035a - System Number - NSK zapisuje Voyagerov ID (001) # kako mora izgledati polje 035$9? može li sadržavati slova i razmake? - marc('035','6', join_with('', # config('input normalize path'), # config('name'), config(), - 'L', + ' L', # config('input name'), # id(), # rec('994','a'), @@ -83,18 +95,10 @@ ); -### 020 -# postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb) - -marc('020','a', - regex('s/ ISBN //g', - rec('10') - ) -); - ### 040 # za sve je isti +# treba utvrditi točnu oznaku za ustanovu marc('040','a', 'HR FFZG' @@ -125,7 +129,7 @@ #if ( rec('675') =~ m/\d=\d/ ) { -if ( grep( m/Prijevod/, rec('300')) || grep( m/Izv. stv. nasl./, rec('300') ) ) { +if ( grep( m/prijevod/i, rec('300')) || grep( m/prevedeno/i, rec('300')) || grep( m/izv.*stv.*nasl/i, rec('300')) || grep( m/izvornik/i, rec('300')) || grep( m/preve/i, rec('200','f')) || grep( m/preve/i, rec('200','g')) || grep( m/prijevod/i, rec('200','f')) || grep( m/prijevod/i, rec('200','g')) ) { marc_indicators('041', 1, ' '); } else { marc_indicators('041', 0, ' '); @@ -141,6 +145,8 @@ ); #_debug(0); +### 044 + ### 080 # 675 podpolja b, c, d ... - što s njima ??? @@ -149,6 +155,18 @@ rec('675','a') ); +marc('080','a', + rec('675','b') +); + +marc('080','a', + rec('675','c') +); + +marc('080','a', + rec('675','d') +); + ### 084 - other classification (R) # NSK ga koristi za stručnu oznaku NSK iz polja 681 @@ -181,29 +199,54 @@ # provjeriti ispise naslova iz svake baze - moguće su greške. # ovo vrijedi za FFSFB -if ( rec('710','f') ) { +if ( rec('710','d') || rec('710','e') || rec('710','f') ) { marc_indicators('111', 2, ' '); marc_compose('111', - 'a', rec('710','a'), + 'a', suffix( + rec('710','b') ? '.' : + '', + rec('710','a'), + ), 'e', rec('710','b'), - 'n', rec('710','d'), - 'd', rec('710','f'), - 'c', rec('710','e'), + 'n', prefix( + rec('710','d') ? '(' : + '', + rec('710','d') + ), + 'd', prefix( + ( ! rec('710','d') ) ? '(' : + ( ! rec('710','e') ) ? '(' : + '; ', + rec('710','f'), + ), + 'c', prefix( + ( rec('710','e') && ( rec('710','d') || rec('710','f') ) ) ? '; ' : + ( ! rec('710','d') && ! rec('710','f') ) ? '(' : + '', + rec('710','e'), + ), + '+',')', ); } else { marc_indicators('110', 2, ' '); + marc('110','a', rec('710','a') ); +marc('110','b', + rec('710','b') +); +if ( rec('710','c') ) { marc('110','c', - rec('710','c') + surround('(', ')', rec('710','c')) ); +} } @@ -240,23 +283,36 @@ } ### 245 -# redoslijed polja važan # podpolja i interpunkcije pripremljeni u modify #_debug(3); marc_compose('245', 'a', suffix( - ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' : - ( rec('200','p') && rec('200','c') ) ? ' : ' : + ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' / ' : + ( rec('200','d') ) ? ' = ' : + ( rec('200','e') ) ? ' : ' : + ( rec('200','k') ) ? ' ; ' : '', rec('200','a'), ), 'b', suffix( - ( rec('200','p') && rec('200','f') ) ? ' / ' : - ( rec('200','p') && rec('200','c') ) ? '. ' : + ( rec('200','d') && rec('200','f') ) ? ' / ' : + ( rec('200','d') && rec('200','c') ) ? '. ' : + '', + rec('200','d'), + ), + 'b', suffix( + ( rec('200','e') && rec('200','f') ) ? ' / ' : + ( rec('200','e') && rec('200','c') ) ? '. ' : '', - rec('200','p'), + rec('200','e'), + ), + 'b', suffix( + ( rec('200','k') && rec('200','f') ) ? ' / ' : + ( rec('200','k') && rec('200','c') ) ? '. ' : + '', + rec('200','k'), ), 'c', suffix( ( rec('200','f') && rec('200','c') ) ? '. ' : @@ -266,6 +322,27 @@ '+', rec('200','c'), ); +#marc_compose('245', +# 'a', suffix( +# ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' : +# ( ! rec('200','p') && rec('200','c') ) ? ' : ' : +# '', +# rec('200','a'), +# ), +# 'b', suffix( +# ( rec('200','p') && rec('200','f') ) ? ' / ' : +# ( rec('200','p') && rec('200','c') ) ? '. ' : +# '', +# rec('200','p'), +# ), +# 'c', suffix( +# ( rec('200','f') && rec('200','c') ) ? '. ' : +# '', +# rec('200','f'), +# ), +# '+', rec('200','c'), +#); + #_debug(0); #marc_compose('245', @@ -310,6 +387,7 @@ ### 250 +## zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti marc_compose('250', 'a',suffix( @@ -320,9 +398,6 @@ 'b', rec('205','f'), ); -#marc('250','b', -# rec('205','f') -#); ### 260 @@ -332,7 +407,7 @@ ### 300 -# provjeriti interpunkcije !! +# urediti interpunkcije za sve kombinacije marc('300','a', suffix( @@ -365,6 +440,8 @@ rec('215','e') ); +### 362 +# brojčani podaci za nakladničku cjelinu ### 440 # 2.ind. prema jeziku i članu @@ -387,44 +464,134 @@ #_debug(3); -marc('440', - 'a', suffix( rec('225','f'), - rec('225','a'), - ), -); +marc_original_order('440','225'); -# join_with(' / ', -# join_with(' ', + +#marc_compose('440', +# 'a', suffix( +# rec('225','i') ? '. ' : +# '', # rec('225','a'), -# rec('225','p'), -# ), -# rec('225','f') # ), +# 'p', suffix( +# ( ! rec('225','x') && rec('225','i') && rec('225','v') ) ? ' ; ' : +# ( rec('225','i') && rec('225','x') ) ? ', ' : +# '', +# rec('225','i'), +# ), +# 'x', suffix( +# ( rec('225','x') && rec('225','v') ) ? ' ; ' : +# '', +# rec('225','x'), +# ), +# 'v', rec('225','v'), +#); -#_debug(0); - -marc('440','n', - rec('225','h') -); - -marc('440','p', - rec('225','i') -); +## ovo radi samo kad 225 nije ponovljivo -marc('440','v', - rec('225','v'), -); +#if ( +# count( lookup( +# sub { 1 }, +# 'ffps','libri', +# sub { rec('225','a') } +# ) ) > 1 +#) { -marc('440','x', - rec('225','x') -); +#marc_compose('440', +# 'a', suffix( +# ( rec('225','x') ) ? ', ' : +# ( rec('225','v') || rec('225','w') ) ? ' ; ' : +# ( rec('225','h') || rec('225','i') ) ? '. ' : +# '', +# join_with(' / ', +# join_with(' : ', +# join_with(' = ', +# rec('225','a'), +# rec('225','d'), +# ), +# rec('225','e'), +# ), +# rec('225','f'), +# ), +# ), +# 'x', suffix( +# ( rec('225','x') && rec('225','v') ) ? ' ; ' : +# ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '. ' : +# '', +# rec('225','x'), +# ), +# 'v', suffix( +# ( rec('225','v') && rec('225','h') || rec('225','i') ) ? '. ' : +# '', +# join_with('; ', +# rec('225','v'), +# ) +# ), +# 'n', suffix( +# ( rec('225','h') && rec('225','p') || rec('225','y') ) ? ', ' : +# '', +# rec('225','h'), +# ), +# 'p', suffix( +# ( rec('225','i') && rec('225','x') ) ? ', ' : +# ( rec('225','i') && rec('225','v') ) ? ' ; ' : +# '', +# rec('225','i'), +# ), +# 'x', suffix( +# ( rec('225','y') && rec('225','v') ) ? ' ; ' : +# '', +# rec('225','y'), +# ), +# 'v', rec('225','w'), +# ); +# +# marc_compose('440', +# 'a', suffix( +# rec('225','k') ? ' ; ' : +# '', +# join_with(' / ', +# rec('225','b'), +# rec('225','j') +# ), +# ), +# 'v', +# rec('225','k'), +# ); +# +# +# marc_compose('440', +# 'a', suffix( +# rec('225','s') ? ' ; ' : +# '', +# join_with(' / ', +# rec('225','c'), +# rec('225','r') +# ), +# ), +# 'v', +# rec('225','s'), +# ); +#} -### 490 +#if ( rec('225','i') ) { +# marc('440','p', +# prefix('. ', +# rec('225','i') +# ), +# ); +#} # -#marc('490','a', -# rec('225','a') -#); +#if ( rec('225','v') ) { +# marc('440','v', +# prefix(' ; ', +# rec('225','v'), +# ), +# ); +#} + +#_debug(0); ### 50x @@ -577,7 +744,10 @@ marc('700','a', - rec('702','a'), + join_with(', ', + rec('702', 'a'), + rec('702', 'b') + ) ); @@ -662,7 +832,7 @@ ### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim if ( - rec('225','a') # da li je nakladnicka cjelina? + rec('225','a') # da li je nakladnička cjelina? ) { my $series_key = @@ -678,7 +848,6 @@ warn "nije novi"; } else { - $series = join_with('', config(), 'LS', @@ -687,8 +856,8 @@ set( $series_key => $series ); -} -} +} # $series +} # nakladnička cjelina my $series_key = join_with('', rec('225','a'),