--- trunk/conf/normalize/mapping.pl 2006/07/05 00:12:08 583 +++ trunk/conf/normalize/mapping.pl 2006/07/30 14:19:54 604 @@ -1,6 +1,10 @@ +if ( rec('200','a') ) { + # Leader +# +# raspraviti 17,18 -if ( rec('200','a') ) { +# u nekim knjižnicama koristi se 999a i 999b if ( rec('999') && first(rec('999')) =~ m/pregledan/i) { marc_leader('05','c'); @@ -8,11 +12,9 @@ marc_leader('05','n'); } -marc_leader('06','a'); - -marc_leader('07','m'); - -marc_leader('18','i'); + marc_leader('06','a'); + marc_leader('07','m'); + marc_leader('18','i'); if ( rec('230') ) { marc_leader('19','r'); @@ -23,10 +25,16 @@ # polje 035 je u NSK ponovljivo. zašto ??? +# privemeno koristimo 0356 umjesto 0359 marc('035','6', - prefix( - rec('994','a'), +join_with('', +# config('input normalize path'), +# config('name'), +# config('input name'), + config(), +# id(), +# rec('994','a'), rec('000') ) ); @@ -34,15 +42,17 @@ # u marc 035a treba dodati System Number - # NSK zapisuje Voyagerov ID (001) - kako ??? +# u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - ' + marc('020','a', rec('010') ); # u polje 040a možda još dodati prefiks HR -# NSK ima HR NSB (možda u novijim zapisima ima NSK) +# NSK ima HR NSB (možda u novijim zapisima ima NSK?) marc('040','a', - rec('801') + 'FFZG' ); marc('040','b', @@ -61,21 +71,31 @@ marc_indicators('245', 0, 0); +#_debug(3); + marc_compose('245', - 'a', rec('200','a'), - 'h', rec('200','b'), - 'b', - join_with(' : ', - rec('200','d'), - rec('200','e') - ), - 'c', - join_with(' ; ', - rec('200','f'), - rec('200','g') + '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', rec('200','k'), + 'b', rec('200','d'), + 'b', rec('200','e'), + 'c', rec('200','f'), +# FIXME append to last subfield + '+', prefix('. ', rec('200','c') ), ); + +#_debug(0); + + # marc('245','a', # rec('200','a') # ); @@ -98,13 +118,29 @@ rec('205','a') ); -marc_compose('260', - 'a', split_rec_on('210','a', qr/\s*;\s*/, 1), - 'b', first(rec('210','c')), - 'a', split_rec_on('210','a', qr/\s*;\s*/, 2), - 'c', first(rec('210','d')), +# FIXME ponovljiva potpolja u originalnom redosljedu +# +marc_original_order('260', '210'); + +marc('260','a', + rec('210','a'), +); + +marc('260','b', + rec('210','c'), +); + +marc('260','c', + rec('210','d'), ); +# marc_compose('260', +# 'a', split_rec_on('210','a', qr/\s*;\s*/, 1), +# 'b', first(rec('210','c')), +# 'a', split_rec_on('210','a', qr/\s*;\s*/, 2), +# 'c', first(rec('210','d')), +# ); + marc('300','a', rec('215','a') ); @@ -124,9 +160,9 @@ marc_indicators('490', 1, ' '); marc('490','a', - join_with(' = ', + join_with(' : ', rec('225','a'), - join_with(" : ", + join_with(" = ", rec('225','d'), join_with(" / ", rec('225','e'), @@ -137,6 +173,7 @@ ); marc('490','v', +# join2_with(225, 'v', ' , ', 225,'w'); join_with(', ', rec('225','v'), rec('225','w') @@ -165,7 +202,7 @@ marc_indicators('505', '0', ' '); marc('505','a', - regex('s/\\r\\n\\r\\n|\\r\\n/ ; /g', + regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g', rec('327') ) ); @@ -177,7 +214,7 @@ # FFPS koristi 330 (NP) - sažetak marc('520','a', - regex('s/\\r\\n\\r\\n|\\r\\n/. /g', + regex('s/[\\r\\n]+/. /g', rec('330') ) ); @@ -218,6 +255,7 @@ ) ); +#_debug(2); marc_indicators('700', 1, ' '); @@ -228,10 +266,7 @@ } marc('700','a', - join_with(', ', - rec('701', 'a'), - rec('701', 'b') - ) + rec('701', 'a'), ); marc('700','a', @@ -255,13 +290,15 @@ ) ); + marc('700','a', - join_with(', ', - rec('702','a'), - rec('702','b') - ) + rec('702','a'), ); + +# ako je u originalu ponovljivo polje treba biti i konvertirano!! + + marc('700','a', join_with(', ', rec('702','c'), @@ -283,6 +320,8 @@ ) ); +#_debug(0); + if ( rec('710','f') ) { @@ -319,40 +358,74 @@ rec('710','c') ); -} +}; -# zapisi za duplanje -if ( rec('230') ) { +marc_indicators('740', 0, ' '); +marc('740','a', + rec('200','c') +); -marc_duplicate(); -marc_remove('245'); +# višerazinci -marc('245','a', - rec('230','a') -); +if ( rec('230') ) { -if ( ! rec('230','a') ) { + marc_duplicate(); + marc_remove('245'); -marc('245','a', - rec('200','a') -); + marc('245','a', + rec('230','a') + ); + + if ( ! rec('230','a') ) { + + marc('245','a', + rec('200','a') + ); + } + + marc('245','b', + rec('230','e') + ); + + marc('245','c', + rec('230','f') + ); + + marc('245','n', + rec('230','v') + ); } -marc('245','b', - rec('230','e') -); +if ( rec('231') ) { -marc('245','c', - rec('230','f') -); + marc_duplicate(); + marc_remove('245'); -marc('245','n', - rec('230','v') -); + marc('245','a', + rec('231','a') + ); -} + if ( ! rec('231','a') ) { + + marc('245','a', + rec('200','a') + ); + } + + marc('245','b', + rec('231','e') + ); + marc('245','c', + rec('231','f') + ); + + marc('245','n', + rec('231','v') + ); + +} }