--- trunk/conf/normalize/ff-libri.pl 2007/11/05 12:21:43 1009 +++ trunk/conf/normalize/ff-libri.pl 2007/11/06 20:20:37 1010 @@ -96,12 +96,19 @@ ### 020 # postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb) -marc('020','a', - regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g', - rec('10') - ) -); +if ( frec('10') ne frec('290') ) { + marc('020','a', + regex('s/-//g', + rec('10') + ) + ); +} +#warn( +# dump( +# frec('10') +# ), +#); ### 035$6 # Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku. @@ -154,8 +161,13 @@ # ???? -#if ( rec('675') =~ m/\d=\d/ ) { -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')) ) { +#if ( rec('675') =~ m/\d=\d/ ) ?? + +if ( + grep( m/[prijevod|prevedeno|izv.*stv.*nasl|izvornik]/i, rec('300') ) || + grep( m/[preve|prijevod]/i, rec('200','f')) || + grep( m/[preve|prijevod]/i, rec('200','g')) +) { marc_indicators('041', 1, ' '); } else { marc_indicators('041', 0, ' '); @@ -168,7 +180,7 @@ #_debug(2); marc_repeatable_subfield('041','a', - lc( rec('101') ) + map { lc($_) } rec('101') ); #_debug(0); @@ -302,15 +314,22 @@ if ( ( rec('200','a') =~ m/^Die /) || ( rec('200','a') =~ m/^Das /) || ( rec('200','a') =~ m/^Der /) || + ( rec('200','a') =~ m/^Les /) || ( rec('200','a') =~ m/^The /) ) { 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/^Un /) || + ( rec('200','a') =~ m/^An /) || + ( rec('200','a') =~ m/^La /) || + ( rec('200','a') =~ m/^Le /) || + ( rec('200','a') =~ m/^Il /) ) { + marc_indicators('245', $i1, 3); } -if ( ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) { +if ( ( rec('200','a') =~ m/^A /) || + ( rec('200','a') =~ m/^L'/) ) { marc_indicators('245', $i1, 2); } @@ -349,7 +368,10 @@ 'c', suffix( ( rec('200','f') && rec('200','c') ) ? '.' : '', - rec('200','f'), + join_with(' ; ', + rec('200','f'), + rec('200','g') + ) ), '+', suffix('.', rec('200','c'), @@ -495,8 +517,48 @@ #_debug(3); ### 440 +## marc_compose radi samo kad polje ni potpolja nisu ponovljivi + +marc_compose('440', + 'a', suffix( + ( rec('225','v') ) ? ' ;' : + ( rec('225','w') ) ? ' ; ' : + ( rec('225','x') ) ? ',' : + ( rec('225','h') || rec('225','i') ) ? '.' : + '.', + frec('225','a') + ), + 'x',suffix( + ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '.' : + '', + frec('225','x') + ), + 'v',suffix( + ( rec('225','v') && ( rec('225','h') || rec('225','i') ) ) ? '.' : + ( rec('225','v') && rec('225','w') ) ? ' ; ' : + '', + frec('225','v') + ), + 'n',suffix( + ( rec('225','h') && rec('225','i') ) ? ',' : + ( rec('225','h') && rec('225','w') ) ? ' ; ' : + '', + frec('225','h') + ), + 'p',suffix( + ( rec('225','i') && rec('225','w') ) ? ' ; ' : + ( rec('225','i') && rec('225','x') ) ? ',' : + '', + frec('225','i') + ), +## 225w treba ici u 440v, na kraj + '+', join_with(' ; ', + rec('225','w'), + ) +); + -marc_original_order('440','225'); +#marc_original_order('440','225'); #marc_compose('440', # 'a', suffix(