local
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 8 Oct 2006 13:25:11 +0000 (13:25 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 8 Oct 2006 13:25:11 +0000 (13:25 +0000)
git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@751 07558da8-63fa-0310-ba24-9fe276d99e06

conf/lookup/ffkk-arti.pl
conf/mjesec.yml
conf/normalize/ff-arti.pl [new file with mode: 0644]
conf/normalize/ff-libri.pl [new file with mode: 0644]

index 06a5e7a..fe525c1 100644 (file)
@@ -1,4 +1,6 @@
 
+marc_indicators('777', 1, ' ');
+
 marc('777','w',
        lookup(
                sub { 'ffkk/peri/mfn' . rec('000') },
@@ -12,7 +14,7 @@ marc('777','w',
        ) ||
 
        lookup(
-               sub { "ffkk/peri" . rec('000') },
+               sub { "ffkk/peri/mfn" . rec('000') },
                'ffkk','peri',
                sub { rec(200,'a') },
 #              sub { rec(900,'x') },
index f0aba63..608762e 100644 (file)
@@ -428,30 +428,28 @@ databases:
 #        path: '/home/mglavica/mnt/LIBRI/LIBRI'
         path: '/backup/isis_backup/A207-3/isisdata/latest/LIBRI/LIBRI'
         encoding: 'cp852'
-        lookup: 'conf/lookup/isis_ffzg.yml'
         #limit: 10
         modify_file: 'conf/modify/common.pl'
         normalize:
-          path: 'conf/normalize/common.pl'
+          path: 'conf/normalize/ff-libri.pl'
       - name: peri
         type: isis
         path: '/backup/isis_backup/A207-3/isisdata/latest/PERI/PERI'
         encoding: 'cp852'
-        lookup: 'conf/lookup/ffkk-peri.yml'
         #limit: 10
         modify_file: 'conf/modify/common.pl'
         normalize:
-          path: 'conf/normalize/common.pl'
+          path: 'conf/normalize/ff-libri.pl'
       - name: arti
         type: isis
 #        path: '/home/mglavica/mnt/ARTI/ARTI'
         path: '/backup/isis_backup/A207-3/isisdata/latest/ARTI/ARTI'
         encoding: 'cp852'
-        lookup: 'conf/lookup/isis_ffzg.yml'
         #limit: 10
-        modify_file: 'conf/modify/ffkk_arti.pl'
+        modify_file: 'conf/modify/ffkk-arti.pl'
         normalize:
-          path: 'conf/normalize/common.pl'
+          - path: 'conf/normalize/ff-arti.pl'
+          - path: 'conf/lookup/ffkk-arti.pl'
 
   fflo:
     name: 'Lingvistika, Filozofski fakultet u Zagrebu'
@@ -604,7 +602,7 @@ databases:
       name: libri
       type: isis
       path: '/data/isis_data/sfm/LIBRI/LIBRI'
-#      path: '/backup/isis_backup/A121-2/ISISDATA/latest/LIBRI/LIBRI'
+#     path: '/backup/isis_backup/A121-2/ISISDATA/latest/LIBRI/LIBRI'
       encoding: 'cp852'
       lookup: 'conf/lookup/isis_ffzg.yml'
       #limit: 10
@@ -644,7 +642,7 @@ databases:
     input:
       name: libri
       type: isis
-      path: '/backup/isis_backup/A224-1/isisdata/latest/LIBRI/LIBRI'
+      path: '/backup/isis_backup/A225-2/isisdata/latest/LIBRI/LIBRI'
       encoding: 'cp852'
       lookup: 'conf/lookup/isis_ffzg.yml'
       #limit: 10
diff --git a/conf/normalize/ff-arti.pl b/conf/normalize/ff-arti.pl
new file mode 100644 (file)
index 0000000..8ee0720
--- /dev/null
@@ -0,0 +1,214 @@
+# Leader
+#
+
+marc_leader('05','n');
+marc_leader('06','a');
+if ( rec('990') ) {
+       marc_leader('07','a');
+} else {
+       marc_leader('07','b');
+};
+marc_leader('18','i');
+
+# privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
+
+#marc('035','6',
+#join_with('',
+#              config('input normalize path'),
+#              config('name'),
+#              config('input name'),
+#              config(),
+#              id(),
+#              rec('994','a'),
+#              rec('000')
+#      )
+#);
+
+marc('020','a',
+       rec('10')
+);
+
+# u polje 040a mo¾da jo¹ dodati prefiks HR
+
+marc('040','a',
+       'FFZG'
+);
+
+marc('040','b',
+       'hrv'
+);
+
+marc_indicators('245', 0, 0);
+
+#_debug(3);
+
+marc_compose('245',
+       'a', suffix(
+               rec('203','b') ? '. '   :
+               rec('203','k') ? ' ; '  :
+               rec('203','d') ? ' = '  :
+               rec('203','e') ? ' : '  :
+               rec('203','f') ? ' / '  :
+                                '.',
+                       rec('203','a')
+       ),
+       'h', rec('203','b'),
+       'b', 
+               join_with(' ; ',
+                       rec('203','k'),
+               ),
+       'b', rec('203','d'), 
+       'b', 
+               join_with(' : ',
+                       rec('203','e'),
+               ),
+       'c', 
+               join_with(' ; ',
+                       rec('203','f'),
+               ),
+       '+', prefix('. ', rec('203','c') ),
+);
+
+marc_original_order('260', '210');
+
+marc('520','a',
+       regex('s/[\\r\\n]+/. /g',
+               rec('330')
+       )
+);
+
+marc_indicators('653', ' ', ' ');
+marc('653','a',
+       rec('610')
+);
+
+# 675 podpolja c, d ... - ¹to s njima ???
+
+marc('080','a',
+       rec('675','a')
+);
+
+marc_indicators('100', 1, ' ');
+marc('100','a',
+       join_with(', ',
+               rec('700', 'a'),
+               rec('700', 'b')
+       )
+);
+
+marc_indicators('700', 1, ' ');
+
+if ( rec('701') ) { 
+marc('700','4', 
+       'aut'
+); 
+}
+
+marc('700','a',
+       rec('701', 'a'),
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('701', 'c'),
+               rec('701', 'd')
+       )
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('701', 'e'),
+               rec('701', 'f')
+       )
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('701', 'g'),
+               rec('701', 'h')
+       )
+);
+
+
+marc('700','a',
+       rec('702','a'),
+);
+
+
+# ako je u originalu ponovljivo polje treba biti i konvertirano!!
+
+
+marc('700','a',
+       join_with(', ',
+               rec('702','c'),
+               rec('702','d')
+       )
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('702','e'),
+               rec('702','f')
+       )
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('702','g'),
+               rec('702','h')
+       )
+);
+
+#_debug(0);
+
+
+if ( rec('710','f') ) {
+
+marc_indicators('111', 2, ' ');
+marc('111','a',
+       rec('710','a')
+);
+
+marc('111','c',
+       rec('710','e')
+);
+
+marc('111','d',
+       rec('710','f')
+);
+
+marc('111','e',
+       rec('710','b')
+);
+
+marc('111','n',
+       rec('710','d')
+);
+
+
+} else {
+       
+marc_indicators('110', 2, ' ');
+marc('110','a',
+       rec('710','a')
+);
+
+marc('110','c',
+       rec('710','c')
+);
+
+};
+
+
+marc_indicators('773', 0, ' ');
+marc('773','g',
+       rec('200','x'),
+);
+
+marc('773','t',
+       join_with(' : ',
+               rec('200','a'),
+               rec('200','e'),
+       ),
+);
+
diff --git a/conf/normalize/ff-libri.pl b/conf/normalize/ff-libri.pl
new file mode 100644 (file)
index 0000000..2de6b1b
--- /dev/null
@@ -0,0 +1,563 @@
+if ( rec('200','a') ) {
+
+# Leader
+# raspraviti 17,18
+
+# u nekim knji¾nicama koristi se 999a i 999b
+
+
+# vrijedi za ffan...
+
+if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {
+       marc_leader('05','c');
+} else {
+       marc_leader('05','n');
+}
+
+       marc_leader('06','a');
+       marc_leader('07','m');
+       marc_leader('18','i');
+
+if ( rec('230') ) {
+       marc_leader('19','r');
+}
+
+
+# 001 polje - Voyager
+
+# polje 035 je u NSK ponovljivo. za¹to ???
+
+# privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
+
+marc('035','6',
+join_with('',
+#              config('input normalize path'),
+#              config('name'),
+#              config('input name'),
+               config(),
+#              id(),
+#              rec('994','a'),
+               rec('000')
+       )
+);
+
+# 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('10')
+);
+
+# u polje 040a mo¾da jo¹ dodati prefiks HR
+# NSK ima HR NSB (mo¾da u novijim zapisima ima NSK?)
+
+marc('040','a',
+       'HR FFZG'
+);
+
+marc('040','b',
+       'hrv'
+);
+
+if (rec('300') && first(rec('300')) =~ m/prijevod/i) {
+       marc_indicators('041', 1, ' ');
+} else {
+       marc_indicators('041', 0, ' ');
+}
+
+marc_repeatable_subfield('041','a',
+       rec('101')
+);
+
+
+## pitati dobricu
+
+if ( rec('200') && first(rec('200')) =~ m/Die /i) {
+       marc_indicators('245', 0, 4);
+} else {
+       marc_indicators('245', 0, 0);
+}
+
+#_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')
+       ),
+       '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'),
+                       ),
+       ),
+
+# 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') ),
+);
+
+
+#_debug(0);
+
+marc('250','a',
+       suffix(
+               rec('205','f') ? ' / ' :
+                                ' '.
+                       rec('205','a')
+       )
+);
+
+marc('250','b',
+       rec('205','f')
+);
+
+# ponovljiva potpolja u originalnom redosljedu
+# 
+marc_original_order('260', '210');
+
+
+# provjeriti interpunkcije !!
+marc('300','a',
+       suffix(
+               rec('215','c')  ?       ' : ' :
+               rec('215','d')  ?       ' ; ' :
+               rec('215','e')  ?       ' + ' :
+                                       ' ',
+                       rec('215','a')
+       )
+);
+
+marc('300','b',
+       suffix(
+               ( rec('215','c') && rec('215','d') )    ?       ' : ' :
+               ( rec('215','c') && rec('215','e') )    ?       ' + ' :
+                                                               ' ',
+                       rec('215','c')
+       )
+);
+
+marc('300','c',
+       suffix(
+               rec('215','e') ? ' + ' :
+                                ' ',
+                       rec('215','d')
+       )
+);
+
+marc('300','e',
+       rec('215','e')
+);
+
+
+marc_indicators('490', 0, ' ');
+
+marc('490','a',
+       rec('225','a')
+);
+
+#marc('490','a',
+#      join_with(' : ',
+#              rec('225','a'),
+#              join_with(" =  ",
+#                      rec('225','d'),
+#                      join_with(" / ",
+#                              rec('225','e'),
+#                              rec('225','f')
+#                      )
+#              )
+#      )
+#);
+
+#marc('490','v',
+#      join2_with(225, 'v', ' , ', 225,'w');
+#      join_with(', ',
+#              rec('225','v'),
+#              rec('225','w')
+#      )
+#);
+
+marc('500','a',
+       rec('300')
+);
+
+marc('500','a',
+       rec('314')
+);
+
+marc('504','a',
+       rec('320')
+);
+
+# napomene uz konverziju polja sa sadr¾ajem:
+# NSK konvertira 327 (NP) u 501 (R)
+# u LOC konv. tablici stoji 327 (NP) u 505 (NR)
+# standard i validacije dopu¹taju 501 (R) i 505 (R)
+# FFPS koristi 327 (P)
+# FFIZ koristi 327
+
+
+marc_indicators('505', '0', ' ');
+
+marc('505','a',
+       regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
+               rec('327')
+       )
+);
+
+# napomene uz konverziju polja 330:
+# NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
+
+# FFAN - (NP) - sadr¾aj, pitati Milu da li je to cijeli sadraj ili nije
+#
+# FFIZ koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja, sa¾eci
+# FFFO koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja 
+# FFPS koristi 330 (NP) - sa¾etak
+
+if ( config() =~ m/ffan/i || config() =~ m/fflo/i ) { 
+
+marc('520','a',
+       regex('s/[\\r\\n]+/. /g',
+               rec('330')
+       )
+);
+
+}
+
+# mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
+
+marc_indicators('655', ' ', 4);
+marc('655','a',
+       rec('608')
+);
+
+marc_indicators('653', ' ', ' ');
+marc('653','a',
+       rec('610')
+);
+
+# 675 podpolja c, d ... - ¹to s njima ???
+
+marc('080','a',
+       rec('675','a')
+);
+
+# 084 je other classification (R)
+# NSK ga koristi za struènu oznaku NSK iz polja 681
+# NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
+#
+# polje 686 koristi FFPS
+
+marc('084','a',
+       rec('686')
+);
+
+marc_indicators('100', 1, ' ');
+marc('100','a',
+       join_with(', ',
+               rec('700', 'a'),
+               rec('700', 'b')
+       )
+);
+
+#_debug(2);
+
+marc_indicators('700', 1, ' ');
+
+if ( rec('701') ) { 
+marc('700','4', 
+       'aut'
+); 
+}
+
+marc('700','a',
+       rec('701', 'a'),
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('701', 'c'),
+               rec('701', 'd')
+       )
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('701', 'e'),
+               rec('701', 'f')
+       )
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('701', 'g'),
+               rec('701', 'h')
+       )
+);
+
+
+marc('700','a',
+       rec('702','a'),
+);
+
+
+# ako je u originalu ponovljivo polje treba biti i konvertirano!!
+
+
+marc('700','a',
+       join_with(', ',
+               rec('702','c'),
+               rec('702','d')
+       )
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('702','e'),
+               rec('702','f')
+       )
+);
+
+marc('700','a',
+       join_with(', ',
+               rec('702','g'),
+               rec('702','h')
+       )
+);
+
+## treba provjeriti da li polje 330 sadrzi jos neke podatke koji mogu biti u <> ili su tu iskljucivo autori? da li samo autori ili neke drugeosobe?
+# 
+# marc('700','a',
+#      rec('330','a')
+# );
+# 
+# 
+# marc('700','a',
+#      rec('330','b')
+# );
+# 
+# marc('700','a',
+#      rec('330','c')
+# );
+# 
+# 
+# marc('700','a',
+#      rec('330','d')
+# );
+# 
+# marc('700','a',
+#      rec('330','e')
+# );
+# 
+# marc('700','a',
+#      rec('330','f')
+# );
+#_debug(0);
+
+
+if ( rec('710','f') ) {
+
+marc_indicators('111', 2, ' ');
+marc('111','a',
+       rec('710','a')
+);
+
+marc('111','c',
+       rec('710','e')
+);
+
+marc('111','d',
+       rec('710','f')
+);
+
+marc('111','e',
+       rec('710','b')
+);
+
+marc('111','n',
+       rec('710','d')
+);
+
+
+} else {
+       
+marc_indicators('110', 2, ' ');
+marc('110','a',
+       rec('710','a')
+);
+
+marc('110','c',
+       rec('710','c')
+);
+
+};
+
+
+marc_indicators('740', 0, ' ');
+
+if ( ! rec('464') ) {
+marc('740','a',
+       rec('200','c')
+);
+
+marc('740','a',
+       rec('200','k')
+);
+
+} else {
+marc('740','a',
+       rec('464','a')
+);
+};
+
+
+
+## vi¹erazinci 
+
+if ( rec('230') ) {
+
+       marc('900','a',
+               id()
+       );
+
+       marc_duplicate();
+
+       marc_remove('035');
+       marc('035','6',
+               join_with('',
+                       config(),
+                       rec('000'),
+                       id(),
+               )
+       );
+
+
+       marc_remove('245');
+       
+       if ( rec('230','a') ) {
+               marc_compose('245',
+               'a', suffix(
+                       rec('230','b') ? '. '   :
+                       rec('230','k') ? ' ; '  :
+                       rec('230','d') ? ' = '  :
+                       rec('230','e') ? ' : '  :
+                       rec('230','f') ? ' / '  :
+                                        '.',
+                               rec('230','a')
+               ),
+               'b', 
+                       join_with(' ; ',
+                               rec('230','k'),
+                       ),
+               'b', rec('230','d'), 
+               'b', 
+                       join_with(' : ',
+                               rec('230','e'),
+                       ),
+               'c', 
+                       join_with(' ; ',
+                               rec('230','f'),
+                       ),
+       );
+       
+       } else {
+       
+               marc_compose('245',
+               'a', suffix(
+                       rec('230','b') ? '. '   :
+                       rec('230','k') ? ' ; '  :
+                       rec('230','d') ? ' = '  :
+                       rec('230','e') ? ' : '  :
+                       rec('230','f') ? ' / '  :
+                                        '.',
+                               rec('200','a')
+               ),
+               'b', 
+                       join_with(' ; ',
+                               rec('230','k'),
+                       ),
+               'b', rec('230','d'), 
+               'b', 
+                       join_with(' : ',
+                               rec('230','e'),
+                       ),
+               'c', 
+                       join_with(' ; ',
+                               rec('230','f'),
+                       ),
+               'n', rec('230','v'),
+       );
+       
+       }
+
+       marc_remove('260');
+       marc('260','c',
+               rec('250')
+       );
+
+       marc_remove('300');
+       marc('300','a',
+               rec('260')
+       );
+
+       marc_remove('490');
+       marc('490','a',
+               rec('270')
+       );
+
+       marc_remove('500');
+       marc('500','a',
+               rec('280')
+       );
+
+       marc_remove('020');
+       marc('020','a',
+               rec('290')
+       );
+
+       marc_indicators('774', 0, ' ');
+       marc('774','g',
+               rec('230','v')
+       );
+       marc('774','t',
+               rec('200','a')
+       );
+       
+       marc('774','w',
+               join_with('',
+                       config(),
+                       rec('000')
+               )
+       );
+
+};
+
+}