local
authorDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 5 Apr 2007 21:48:41 +0000 (21:48 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 5 Apr 2007 21:48:41 +0000 (21:48 +0000)
git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@816 07558da8-63fa-0310-ba24-9fe276d99e06

conf/mjesec.yml
conf/modify/common.pl
conf/normalize/ff-libri.pl
conf/normalize/ff-nakladnicka.pl

index 1488944..cb4ac4d 100644 (file)
@@ -315,7 +315,7 @@ databases:
         #limit: 10
         #modify_file: 'conf/modify/common.pl'
         normalize:
-          path: 'conf/normalize/an-reports.pl'
+          path: 'conf/normalize/reports.pl'
 
 
   ffar:
@@ -328,7 +328,8 @@ databases:
         #limit: 10
         modify_file: 'conf/modify/common.pl'
         normalize:
-          path: 'conf/normalize/minimal.pl'
+          - path: 'conf/normalize/ff-nakladnicka.pl'
+          - path: 'conf/normalize/ff-libri.pl'
       - name: peri
         type: isis
         path: '/backup/isis_backup/A018-2/isisdata/latest/PERI/PERI'
@@ -552,7 +553,8 @@ databases:
         #limit: 10
         modify_file: 'conf/modify/common.pl'
         normalize:
-          path: 'conf/normalize/minimal.pl'
+          - path: 'conf/normalize/ff-nakladnicka.pl'
+          - path: 'conf/normalize/ff-libri.pl'
       - name: peri
         type: isis
         path: '/backup/isis_backup/A108-1/ISISDATA/latest/PERI/PERI'
index 2d56340..9cd17f7 100644 (file)
 #    ' ; ' => '^a'
 #    ' ; ' => '^a'
 
+
+# polja se svode na a, e i f
+#
+#200
+#  '^a'
+#    ' : ' => ' : ^e'
+#    ' = ' => ' = ^e'
+#    ' ; ' => ' ; ^e'
+#    ' / ' => ' / ^f'
+#    '^d'  => ' = ^e'
+#    '^k'  => ' ; ^e'
+#  '^e'
+#    '^d'  => ' = '
+#    '^e'  => ' : '
+#    '^k'  => ' ; '
+#  '*'
+#    '^f'  => ' / ^f'
+#    '^g'  => ' ; '
+#    '[The]' => 'The'
+#    '[A]'   => 'A'
+#    '[Der]' => 'Der'
+#    '[Le]'  => 'Le'
+
+#200
+#  '^a'
+#    ' : 1' => ' 1'
+#    ' : ' => '^e'
+#    ' = ' => '^d'
+#    ' ; ' => '^k'
+#  '^k'
+#    '^c' => '. '
+#    '^e' => ' : '
+#    '^e' => ' : '
+#  '^d'
+#    '^e' => ' : '
+#    '^k' => ' ; '
+#  '^e'
+#    '^d' => ' = '
+#    '^k' => ' ; '
+#    '^e' => ' : '
+#  '*'
+#    '^g' => ' ; '
+
 200
+  '*'
+    '^e^f^g' => '^f'
+#    '^a^f^g' => '^a'
+#    '^f^g\$'   => ''
+    '^f^g'    => '^f'
+    '^g'      => ' ; '
+    '[The]' => 'The'
+    '[A]'   => 'A'
+    '[Der]' => 'Der'
+    '[Le]'  => 'Le'
   '^a'
-    ' : 1' => ' 1'
     ' : ' => '^e'
     ' = ' => '^d'
     ' ; ' => '^k'
   '^k'
-    '^c' => '. '
     '^e' => ' : '
     '^e' => ' : '
   '^d'
     '^d' => ' = '
     '^k' => ' ; '
     '^e' => ' : '
-  '*'
-    '^g' => ' ; '
+  '^a'
+    '^d' => ' = ^b'
+    '^e' => ' : ^b'
+    '^k' => ' ; ^b'
 
 205
   '^a'
-    ' / ' => '^f'
+    '^f' => ' / '
+
 
 210
-  '^a'
-    ' ; ' => '^a'
-    ' ; ' => '^a'
-    ' ; ' => '^a'
-    ' ; ' => '^a'
+  '*'
     ' ; ' => '^a'
-  '^c'
-    ' : ' => '^c'
-    ' : ' => '^c'
     ' : ' => '^c'
-    ' : ' => '^c'
-    ' : ' => '^c'
-    ' : ' => '^c'
-    ' ; ' => '^a'
-    ' ; ' => '^a'
-    ' ; ' => '^a'
-    ' ; ' => '^a'
   '*'
     '^c' => ' : ^b'
     '^d' => '^c'
   '^e'
     ' : ' => ' : ^f'
 
-# priprema za konverziju u 440:
+
+
+# staro
+#
+#210
+#  '^a'
+#    ' ; ' => '^a'
+#    ' ; ' => '^a'
+#    ' ; ' => '^a'
+#    ' ; ' => '^a'
+#    ' ; ' => '^a'
+#  '^c'
+#    ' : ' => '^c'
+#    ' : ' => '^c'
+#    ' : ' => '^c'
+#    ' : ' => '^c'
+#    ' : ' => '^c'
+#    ' : ' => '^c'
+#    ' ; ' => '^a'
+#    ' ; ' => '^a'
+#    ' ; ' => '^a'
+#    ' ; ' => '^a'
+#  '*'
+#    '^c' => ' : ^b'
+#    '^d' => '^c'
+#  '^a'
+#    '^a' => ' ; ^x'
+#    '^c' => ', ^c'
+#  '^x'
+#    '^a' => ' ; ^x'
+#    '^a' => ' ; ^x'
+#    '^a' => ' ; ^x'
+#    '^a' => ' ; ^x'
+#  '^b'
+#    '^a' => ' ; ^x'
+#    '^a' => ' ; ^x'
+#    '^a' => ' ; ^x'
+#    '^a' => ' ; ^x'
+#    '^c' => ', ^c'
+#  '*'
+#    '^x' => '^a'
+#    '^y' => '^a'
+#  '^c'
+#    '. (' => '. ^e('
+#  '^e'
+#    ' : ' => ' : ^f'
+
+# priprema za konverziju u 440
 
 225
-  '*'
-    ')('  => '^b'
   '^a'
     ' : ' => '^e'
-    ' / ' => '^f'
+    ' = ' => '^d'
+    ' ; ' => '^k'
+  '^k'
+    '^e' => ' : '
+    '^e' => ' : '
+  '^d'
+    '^e' => ' : '
+    '^k' => ' ; '
+  '^e'
+    '^d' => ' = '
+    '^k' => ' ; '
+    '^e' => ' : '
+  '^a'
+    '^d' => ' = '
+    '^e' => ' : '
+    '^k' => ' ; '
+  '^v'
+    '^w' => ', '
+  '*'
+    '[The]' => 'The'
+    '[A]'   => 'A'
+    '[Der]' => 'Der'
+    '[Le]'  => 'Le'
+
+#225
+#  '^a'
+#    ' : ' => ' : ^e'
+#    ' = ' => ' = ^e'
+#    ' ; ' => ' ; ^e'
+#    ' / ' => ' / ^f'
+#    '^d'  => ' = ^e'
+#    '^k'  => ' ; ^e'
+#  '^e'
+#    '^e'  => ' : '
+#    '^k'  => ' ; '
+#  '*'
+#    '^f'  => ' / ^f'
+#    '^g'  => ' ; '
+#    '[The]' => 'The'
+#    '[A]'   => 'A'
+#    '[Der]' => 'Der'
+#    '[Le]'  => 'Le'
+##  '*'
+##    ')('  => '^b'
 
 
 250
 #    '^a' => '^f'
 #  '^f'
 #    '^a' => '^g'
-  
+
+
index 047262f..a8b5fbf 100644 (file)
@@ -29,8 +29,39 @@ if ( rec('230') ) {
 
 ### 001 - Voyager
 
+### 007
+
+marc_fixed('007',00,'ta');
+
 ### 008
 
+if ( rec('994','c') ) {
+       marc_fixed('008','00',
+               regex('s/^\d\d//',
+                       rec('994','c')
+               ),
+       );
+} else {
+       marc_fixed('008', 00,
+               '000101'
+       );
+}
+
+#warn( dump(
+#      regex('s/^\d\d//',
+#              rec('994','c')
+#      ),
+#)
+#);
+
+## FIXME treba velika slova pretvoriti u mala
+
+marc_fixed('008','35',
+       first( rec('101') )
+);
+
+
+
 ### 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?
@@ -80,7 +111,7 @@ marc('040','e',
 ### 041 indikatori
 # pretpostavke o indikatorima:
 # 
-# 1. Ako postoji polje 300 i prvo pojavljivanje tog polja sadr¾i /Prijevod/ , i1 = 1
+# 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, i1 = 1
 # (Da li je napomena uvijek pisana?)
 #
 # 2. Podatak o prevodiocu u 200g. Problem: razlièiti oblici rijeèi, razlièiti jezici.
@@ -89,10 +120,11 @@ marc('040','e',
 # (ako postoje zagrade pr. 94(=411.16) onda su to pomoæne oznake)
 # pr. 821.111-2=163.42 je prijevod engleske drame na HR. 
 # to ima samo za knji¾evna djela, eseje.... 
+# ????
 
 
 #if ( rec('675') =~ m/\d=\d/ ) {
-if ( first(rec('300')) =~ m/Prijevod/ || first(rec('300')) =~ m/Izv. stv. nasl./ ) {
+if ( grep( m/Prijevod/, rec('300')) || grep( m/Izv. stv. nasl./, rec('300') ) ) {
        marc_indicators('041', 1, ' ');
 } else {
        marc_indicators('041', 0, ' ');
@@ -176,72 +208,101 @@ marc('110','c',
 
 
 ### 245 indikatori
-# i1 = 1 za sve zapise
+# i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710
 # i2 = pretpostavlja se na temelju èlana na poèetku naslova i jezika
 # treba nadopuniti i dati podatke na verifikaciju knji¾nièarima
 
-marc_indicators('245', 1, 0);
+my $i1;
+
+if ( rec('700') || rec('710') ) {
+       $i1 = 1;
+
+} else {
+       $i1 = 0;
+}
+       
+marc_indicators('245', $i1, 0);
 
 if (   ( rec('200','a') =~ m/^Die /) || 
        ( rec('200','a') =~ m/^Das /) || 
        ( rec('200','a') =~ m/^The /) ) {
-               marc_indicators('245', 1, 4);
+               marc_indicators('245', $i1, 4);
 } 
 
 if (   ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
-               marc_indicators('245', 1, 2);
+               marc_indicators('245', $i1, 2);
 } 
 
 if (   ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
-               marc_indicators('245', 1, 2);
+               marc_indicators('245', $i1, 2);
 } 
 
 ### 245
-# redoslijed polja
+# redoslijed polja va¾an
+# podpolja i interpunkcije pripremljeni u modify
 
 #_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')
+               ( ! rec('200','b') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' : ' ', 
+                       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'), 
+               ( rec('200','b') && rec('200','f') ) ? ' / ' : 
+               ( rec('200','b') && rec('200','c') ) ? '. '  : 
+                       ' ',
+                       rec('200','b'),
        ),
-       'b', suffix(
-               ( rec('200','e') && rec('200','f') ) ? ' / ' :
-                                                      ' ',
-                       join_with(' : ',
-                               rec('200','e'),
-                       ),
+       'c', suffix(
+               ( rec('200','f') && rec('200','c') ) ? '. ' :
+                       ' ',
+                       rec('200','f'),
        ),
+       '+', rec('200','c'),
+);
 
-       'c', rec('200','f'),
+#_debug(0);
 
-# append to last subfield
-       '+', prefix('. ', 
-               rec('200','c') 
-       ),
-);
+#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'),
+#                      ),
+#      ),
+#      'c', rec('200','f'),
+### append to last subfield
+#      '+', prefix('. ', 
+#              rec('200','c') 
+#      ),
+#);
 
 
 
-#_debug(0);
 
 
 ### 250
@@ -282,7 +343,7 @@ marc('300','b',
        suffix(
                ( rec('215','c') && rec('215','d') ) ? ' ; ' :
                ( rec('215','c') && rec('215','e') ) ? ' + ' :
-                                                               ' ',
+                                                      ' ',
                        rec('215','c')
        )
 );
@@ -305,15 +366,23 @@ marc('300','e',
 
 marc_indicators('440', ' ', '0');
 
+if (   ( rec('225','a') =~ m/^Die /) || 
+       ( rec('225','a') =~ m/^Das /) || 
+       ( rec('225','a') =~ m/^The /) ) {
+               marc_indicators('440', ' ', 4);
+} 
+
+if (   ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
+               marc_indicators('440', ' ', 2);
+} 
+
+if (   ( rec('225','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
+               marc_indicators('440', ' ', 2);
+} 
+
 marc('440','a',
-       join_with(' : ',
-               rec('225','a'),
-               join_with(' / ',
-                       rec('225','e'),
-                       rec('225','f')
-               )
-       )
-) ;
+       rec('225','a'),
+);
 
 marc('440','n',
        rec('225','h')
@@ -324,20 +393,13 @@ marc('440','p',
 );
 
 marc('440','v',
-       join_with(', ',
-               rec('225','v'),
-               rec('225','w')
-       ),
+       rec('225','v'),
 );
 
 marc('440','x',
        rec('225','x')
 );
 
-marc('440','a',
-       rec('225','b'),
-);
-
 
 ### 490 
 #
@@ -346,7 +408,7 @@ marc('440','a',
 #);
 
 
-### 500
+### 50x
 
 marc('500','a',
        rec('300')
@@ -390,6 +452,15 @@ if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
 );
 }
 
+if ( config() =~ m/ffan/ ) {
+       marc_indicators('505', '0', ' ');
+       marc('505','a',
+               regex('s/[<>]//g',
+                       rec('330')
+               )       
+);
+}
+
 
 
 ## napomene uz konverziju polja 330:
@@ -408,15 +479,15 @@ if ( config() =~ m/ffps/ ) {
        );
 }
 
-# FFTU 330 - ???
-if ( config() =~ m/fftu/ ) { 
-       marc('520','a',
-               rec('330')
-       );
-}
+### 526 - STUDY PROGRAM INFORMATION NOTE
 
+marc_indicators('526', 8, ' ');
 
-### 538
+marc('526','a',
+       rec('996')
+);
+
+### 538 - zahtjevi sustava
 
 marc('538','a',
        rec('337','a')
@@ -608,43 +679,47 @@ if ($series_key) {
 #
 
 
+## 852 - lokacija
 
-##################################
-##                              ##
-## pomoæni ispisi - privremeno! ##
-##                              ##
-##################################
+marc_indicators('852', 4, ' ');
 
-if ( ! rec('464') && rec('200','c') ) {
-       marc('002',
-               'ima-200c-nema-464'
-       );
-}
-
-if ( ! rec('464') && rec('200','k') ) {
-       marc('003',
-               'ima-200k-nema-464'
-       );
-}
+marc('852','j',
+       join_with(' ',
+               rec('990')
+       )
+);
 
-if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
-       marc('004',
-               'ima-464-nema-200c-ili-200k'
-       );
-}
+## 876 - item information - basic bibliographic unit
 
+marc('876','a',
+       rec('991'),
+);
 
+## 886 - former marc
 
-#_debug(2);
+marc_indicators('886', 2, ' ');
 
-if ( rec('200') =~ m/prev/ ) {
-       marc('005',
-               'prijevod'
-       );
-}
+marc('886','2',
+       'ffmarc'
+);
 
-#_debug(0);
+marc('886','a',
+       '994'
+);
 
+marc('886','b',
+       join_with(''.
+               '##^a',
+               join_with('',
+                       prefix('^a',
+                               rec('994','a'),
+                       ),
+                       prefix('^b',
+                               rec('994','b')
+                       )
+               )
+       )
+);
 
 
 } # polje 200a
index 09b42e9..b9947e1 100644 (file)
@@ -43,6 +43,12 @@ marc_leader('06','a');
 marc_leader('07','c');
 marc_leader('18','i');
 
+## 008 
+
+marc_fixed('008','35',
+       first( rec('101') )
+);
+
 marc('035','6', $series );
 
 marc('040','a',
@@ -63,65 +69,75 @@ marc_repeatable_subfield('041','a',
        rec('101')
 );
 
-# indikatori za èlanove !!
+# indikatori za 245 
 
-marc_indicators('245', 0, 0);
+my $i1;
+
+if ( rec('700') || rec('710') ) {
+       $i1 = 1;
+
+} else {
+       $i1 = 0;
+}
+       
+marc_indicators('245', $i1, 0);
 
-if (   ( rec('225','a') =~ m/^Die /) || 
-       ( rec('225','a') =~ m/^Das /) || 
-       ( rec('225','a') =~ m/^The /) ) {
-               marc_indicators('245', 0, 4);
+if (   ( rec('200','a') =~ m/^Die /) || 
+       ( rec('200','a') =~ m/^Das /) || 
+       ( rec('200','a') =~ m/^The /) ) {
+               marc_indicators('245', $i1, 4);
 } 
 
-if (   ( rec('225','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
-       {
-               marc_indicators('245', 0, 2);
+if (   ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) {
+               marc_indicators('245', $i1, 2);
 } 
 
-# treba dodati ostala polja za naslov ... !!!
+if (   ( rec('200','a') =~ m/^An /) && ( rec(101) =~ m/ENG/ ) ) {
+               marc_indicators('245', $i1, 2);
+} 
 
-marc('245','a',
-       join_with(' : ',
-               rec('225','a'),
-               rec('225','e')
-       ),
-);
 
-marc('245','c',
-       rec('225','f')
-);
+## 245
 
-marc('245','n',
-       rec('225','h'),
+marc('245',
+       'a', suffix(
+               ( ! rec('225','b') && rec('225','f') ) ? ' / ' : 
+               rec('225','c') ? ' / ' : ' ',
+                       rec('225','a'),
+       )
 );
-
-marc('245','p',
-       rec('225','i'),
+marc('245',
+       'b', suffix(
+               ( rec('225','b') && rec('225','f') ) ? ' / ' : 
+               ( rec('225','b') && rec('225','c') ) ? '. '  : 
+                       ' ',
+                       rec('225','b'),
+       ),
+);
+marc('245',
+       'c', suffix(
+               ( rec('225','f') && rec('225','c') ) ? '. ' :
+                       ' ',
+                       rec('225','f'),
+       ),
 );
-
 
 marc_original_order('260', '210');
 
 marc_remove('260','c');
 
-marc('300','c',
-       suffix(
-               rec('215','e') ? ' + ' :
-                                ' ',
-                       rec('215','d')
-
-       )
-);
+## FIXME - UPISATI PODATAK U 260c
 
 #_debug(2);
-marc('900','a',
-       lookup(
-               sub { rec('702','a') . ', ' . rec('702','b') },
-               'nsk','baza',
-               sub { rec('200','a') . rec('210','a') . rec('210','c') },
-               sub { rec('225','a') . rec('210','a') . rec('210','b') },
-       )
-);
+
+#marc('900','a',
+#      lookup(
+#              sub { rec('702','a') . ', ' . rec('702','b') },
+#              'nsk','baza',
+#              sub { rec('200','a') . rec('210','a') . rec('210','c') },
+#              sub { rec('225','a') . rec('210','a') . rec('210','b') },
+#      )
+#);
 
 #_debug(0);