local
[webpac2] / conf / normalize / ff-libri.pl
index 041defa..7a75e58 100644 (file)
@@ -11,9 +11,9 @@
 if ( rec('200','a') ) {
 
 ### LEADER
-## raspraviti 17,18
 
-## LDR 05 - c ili d - iz 999a ili 999b ili 999 - provjeriti za svaku knjiznicu
+## LDR 05 - c = pregledan ; n = new
+## 999^aP - SFM
 
 if ( rec('999') && rec('999','a') =~ m/(pregledan|P)/i) {
        marc_leader('05','c');
@@ -21,16 +21,18 @@ if ( rec('999') && rec('999','a') =~ m/(pregledan|P)/i) {
        marc_leader('05','n');
 }
 
-## LDR 06 - a ili m - odrediti kriterije
+## LDR 06 - a - language material 
 
        marc_leader('06','a');
 
-## LDR 07 - m
+## LDR 07 - m - Monograph/item
 
        marc_leader('07','m');
 
-## LDR 17 i 18 - razjasniti
+## LDR 17
+       marc_leader('17','7');
 
+## LDR 18 
        marc_leader('18','i');
 
 ## LDR 19 - razjasniti
@@ -39,7 +41,7 @@ if ( rec('230') ) {
        marc_leader('19','r');
 }
 
-### 001 - Voyager
+### 001 - Voyager ID
 
 ### 003 - razjasniti
 
@@ -48,7 +50,7 @@ if ( rec('230') ) {
 marc_fixed('007',00,'ta');
 
 ### 008 - All materials
-## 008 00 - datum - ¹to kad datum nije poznat?
+## dodati sve moguce slucajeve za datum, popuniti ono sto nedostaje
 
 if ( rec('994','c') ) {
        marc_fixed('008','00',
@@ -58,7 +60,7 @@ if ( rec('994','c') ) {
        );
 } else {
        marc_fixed('008', 00,
-               '000101'
+               '000000'
        );
 }
 
@@ -69,33 +71,75 @@ if ( rec('994','c') ) {
 #)
 #);
 
-## 008 06 - Type of date/Publication status - t - raspraviti
+## 008 06 - Type of date/Publication status
+## dodati i ostale moguænosti
+## 008 07-10 - Date 1 - iz 210d koji kroz modify postaje 210c
 
-marc_fixed('008','06', 't');   
+my $year = rec('210','c');
 
-## 008 07-10 - Date 1 - iz 210d koji kroz modify postaje 210c
+if ( rec('210','c') ) {
+       marc_fixed('008','06','s');             # 06 - Type of date/Publication status, s = single know date
+       
+#      warn "## year = $year";
+
+       if ( $year =~ m/^(\d{4})/ ) {
+#      warn "## $1 ##\n";
+               marc_fixed('008','07',$1);              # 07-10 - Date 1
+
+} else {
+       marc_fixed('008','06','n');             # 06 - n = unknown date
+       marc_fixed('008','07','uuuu');
+}
+}
 
-marc_fixed('008','07',
-       rec('210','c')
-);
 
 ## 008 11-14 - Date 2 
 
 ## 008 15-17 - Place of publication, production, or execution - ¹to ako nema 102?
+## raspraviti
 
-marc_fixed('008','15', 
-       lc ( rec('102') ) 
-);                             
+#marc_fixed('008','15', 
+#      lc ( rec('102') ) 
+#);
 
-## 008 35-37 - Language - ¹to ako nema 101?
+my $zemlja = 
+       lookup(
+               sub { rec('B') },
+               'kodovi','zemlje',
+               sub { rec('A') },
+               sub { 
+                       regex('s/[\s;:]/g',
+                               rec('210','a') 
+                       )
+               },
+       );
+
+warn (
+       dump ($zemlja)
+);
+
+if ( $year =~ m/^(\d{4})/ ) {
+       if ( $1 >= 1990 ) {
+               marc_fixed('008','15',
+                       lc ( $zemlja )
+
+               );
+#      } elsif ( dump( $zemlja ) eq 'hr' ) {
+#              marc_fixed('008','15','yu');
+       }
+}
+
+
+## 008 35-37 - Language
 
 marc_fixed('008','35',
-       first( lc(rec('101')) )         
+       # first( lc(rec('101')) )               
+       lc( frec('101'))                
 );
                                        
 ## 008 38 - Modified record - razjasniti
 
-## 008 39 - Cataloging source - d
+## 008 39 - Cataloging source - d (other)
 
 marc_fixed('008','39','d');            
 
@@ -113,14 +157,16 @@ marc_fixed('008','39','d');
 ## 008 34 - Biography
 
 ### 020
-## modify -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (sfb)
+## modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb)
 
 if ( frec('10') ne ( frec('290') ) ) {
        marc('020','a', 
-               regex('s/-//g',
-#              regex('s/\(\d\)\(/$1 \(//g',
-                       rec('10')
-               )
+               # isbn_13(
+                       regex('s/\s\s/ /g',
+                       # regex('s/\(\d\)\(/$1 \(//g',
+                               rec('10','a')
+                       )
+               # )
        ); 
 }
 
@@ -130,21 +176,21 @@ if ( frec('10') ne ( frec('290') ) ) {
 #      ),
 #);
 
-### 035$6
+### 035$
 ## Privemeno koristimo 035$6 umjesto 035$9, zato ¹to marclint prijavljuje 9 kao gre¹ku.
 ## marc 035a - System Number - Voyagerov ID (001) 
 ## polje 035$9 mo¾e sadr¾avati slova i razmake
 
 marc('035','6',
 join_with('',
-#              config('input normalize path'),
-#              config('name'),
-               config(),
-               ' L',
-#              config('input name'),
-#              id(),
-#              rec('994','a'),
-               rec('000')
+       # config('input normalize path'),
+       # config('name'),
+       config(),
+       ' L',
+       # config('input name'),
+       # id(),
+       # rec('994','a'),
+       rec('000')
        )
 );
 
@@ -180,10 +226,10 @@ marc('040','e',
 ## to ima samo za knji¾evna djela, eseje.... 
 ## ????
 
-#if ( rec('675') =~ m/\d=\d/ ) ??
+#if ( rec('675') =~ m/\d=\d/ ) ?
 
 if ( 
-       grep( m/[prijevod|prevedeno|izv.*stv.*nasl|izvornik]/i, rec('300') ) || 
+       grep( m/[prijevod|prevedeno|izv.*stv.*nasl|izvornik|nas.*izv*]/i, rec('300') ) || 
        grep( m/[preve|prijevod]/i, rec('200','f')) || 
        grep( m/[preve|prijevod]/i, rec('200','g'))  
 ) {
@@ -382,8 +428,12 @@ marc_compose('245',
                ( rec('200','f') && rec('200','c') ) ? '.' :
                        '',
                        join_with(' ; ',
-                               rec('200','f'),
-                               rec('200','g')
+                               regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
+                                       rec('200','f'),
+                               ),
+                               regex('s/(\S\.)\s(\S\.\s)/$1$2/g',
+                                       rec('200','g')
+                               )
                        )
        ),
        ## append to last subfield
@@ -499,9 +549,13 @@ marc_template(
                'a ;|v ;|w',
                #mozda greska:
                'a ;|v,|x ;|w',
+               'a ;|v,|x.|p',
                'a,|x ;|v',
                'a,|x.|p ;|w',
        ],
+         from => "{ a => 1, i => 1, w => 1, \"x\" => 1 }",
+           to => "{ a => 1, p => 1, v => 1, \"x\" => 1 }",
+
        marc_template => [
                'a',
                'a ;|v',