/[webpac2]/trunk/conf/normalize/ff-libri.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/conf/normalize/ff-libri.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 783 - (hide annotations)
Wed Dec 6 23:42:20 2006 UTC (17 years, 5 months ago) by dpavlin
File MIME type: text/plain
File size: 9525 byte(s)
local

1 dpavlin 773 # ne konvertira se ako nema polje 200^a
2    
3 dpavlin 751 if ( rec('200','a') ) {
4    
5     # Leader
6     # raspraviti 17,18
7 dpavlin 773 #
8 dpavlin 751 # u nekim knji¾nicama koristi se 999a i 999b
9 dpavlin 773 #
10 dpavlin 751 # vrijedi za ffan...
11    
12     if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {
13     marc_leader('05','c');
14     } else {
15     marc_leader('05','n');
16     }
17    
18     marc_leader('06','a');
19     marc_leader('07','m');
20     marc_leader('18','i');
21    
22     if ( rec('230') ) {
23     marc_leader('19','r');
24     }
25    
26     # 001 polje - Voyager
27 dpavlin 773 #
28 dpavlin 751 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
29 dpavlin 773 # u marc 035a - System Number - ??
30     # NSK zapisuje Voyagerov ID (001) - kako ???
31 dpavlin 751
32 dpavlin 773
33 dpavlin 751 marc('035','6',
34     join_with('',
35     # config('input normalize path'),
36     # config('name'),
37 dpavlin 758 config(),
38     'L',
39 dpavlin 751 # config('input name'),
40     # id(),
41     # rec('994','a'),
42     rec('000')
43     )
44     );
45    
46    
47 dpavlin 783 # FFSF - nekoliko zaredanih ISBN, odvojenih s '. - '
48     # drugi ISBN poèinje prefixom ISBN
49 dpavlin 751
50     marc('020','a',
51 dpavlin 783 regex('s/ ISBN //g',
52     rec('10')
53     )
54 dpavlin 751 );
55    
56 dpavlin 773 # u polje 040a - prefiks HR ?
57 dpavlin 751 # NSK ima HR NSB (mo¾da u novijim zapisima ima NSK?)
58    
59     marc('040','a',
60     'HR FFZG'
61     );
62    
63     marc('040','b',
64     'hrv'
65     );
66    
67 dpavlin 758 marc('040','e',
68     'HR PPIAK'
69     );
70    
71 dpavlin 773 if ( rec('300') && first(rec('300')) =~ m/Prijevod/) {
72 dpavlin 751 marc_indicators('041', 1, ' ');
73     } else {
74     marc_indicators('041', 0, ' ');
75     }
76    
77 dpavlin 773 ## naæi primjer u NSK
78 dpavlin 758
79 dpavlin 783 #_debug(2);
80 dpavlin 751 marc_repeatable_subfield('041','a',
81     rec('101')
82     );
83 dpavlin 783 #_debug(0);
84 dpavlin 751
85 dpavlin 773 # indikatori za èlanove. treba uvjetovati prema jezicima !!
86 dpavlin 751
87 dpavlin 783 marc_indicators('245', 0, 0);
88    
89 dpavlin 758 if ( ( rec('200','a') =~ m/^Die /) ||
90     ( rec('200','a') =~ m/^Das /) ||
91     ( rec('200','a') =~ m/^The /) ) {
92     marc_indicators('245', 0, 4);
93 dpavlin 783 }
94 dpavlin 751
95 dpavlin 783 if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) )
96     {
97     marc_indicators('245', 0, 2);
98     }
99    
100    
101    
102    
103 dpavlin 751 #_debug(3);
104    
105     marc_compose('245',
106     'a', suffix(
107     rec('200','b') ? '. ' :
108     rec('200','k') ? ' ; ' :
109     rec('200','d') ? ' = ' :
110     rec('200','e') ? ' : ' :
111     rec('200','f') ? ' / ' :
112     '.',
113     rec('200','a')
114     ),
115 dpavlin 783 # 'h', rec('200','b'),
116 dpavlin 751 'b', suffix(
117     ( rec('200','k') && rec('200','f') ) ? ' / ' :
118     ' ',
119     join_with(' ; ',
120     rec('200','k'),
121     ),
122     ),
123     'b', suffix(
124     ( rec('200','d') && rec('200','f') ) ? ' / ' :
125     ' ',
126     rec('200','d'),
127     ),
128     'b', suffix(
129     ( rec('200','e') && rec('200','f') ) ? ' / ' :
130     ' ',
131     join_with(' : ',
132     rec('200','e'),
133     ),
134     ),
135    
136 dpavlin 783 'c', rec('200','f'),
137    
138     # append to last subfield
139     '+', prefix('. ', rec('200','c') ),
140 dpavlin 751 );
141    
142    
143 dpavlin 783 #marc('440','a',
144     # suffix(
145     # rec('225','e') ? ' : ' :
146     # rec('225','v') ? ' ; ' :
147     # '. ',
148     # rec('225','a'),
149     # )
150     #);
151    
152    
153    
154    
155    
156    
157 dpavlin 751 #_debug(0);
158    
159     marc('250','a',
160     suffix(
161     rec('205','f') ? ' / ' :
162     ' '.
163     rec('205','a')
164     )
165     );
166    
167     marc('250','b',
168     rec('205','f')
169     );
170    
171     # ponovljiva potpolja u originalnom redosljedu
172 dpavlin 773
173 dpavlin 751 marc_original_order('260', '210');
174    
175    
176     # provjeriti interpunkcije !!
177 dpavlin 758 # u NSK nesto ne stima
178    
179 dpavlin 751 marc('300','a',
180     suffix(
181 dpavlin 783 rec('215','c') ? ' : ' :
182     rec('215','d') ? ' ; ' :
183     rec('215','e') ? ' + ' :
184 dpavlin 751 ' ',
185     rec('215','a')
186     )
187     );
188    
189     marc('300','b',
190     suffix(
191 dpavlin 783 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
192     ( rec('215','c') && rec('215','e') ) ? ' + ' :
193 dpavlin 751 ' ',
194     rec('215','c')
195     )
196     );
197    
198     marc('300','c',
199     suffix(
200     rec('215','e') ? ' + ' :
201     ' ',
202     rec('215','d')
203     )
204     );
205    
206     marc('300','e',
207     rec('215','e')
208     );
209    
210    
211 dpavlin 758 # provjeriti
212    
213 dpavlin 783 marc_indicators('440', ' ', '0');
214 dpavlin 751
215 dpavlin 783 marc('440','a',
216     join_with(' / ',
217     rec('225','a'),
218     rec('225','f')
219     )
220 dpavlin 751 );
221    
222 dpavlin 783 #marc('440','a',
223 dpavlin 751 # join_with(' : ',
224     # rec('225','a'),
225     # join_with(" = ",
226     # rec('225','d'),
227     # join_with(" / ",
228     # rec('225','e'),
229     # rec('225','f')
230     # )
231     # )
232     # )
233     #);
234    
235 dpavlin 783 marc('440','h',
236     rec('225','h')
237     );
238    
239     marc('440','p',
240     rec('225','i')
241     );
242    
243     marc('440','v',
244     join_with(', ',
245     rec('225','v'),
246     rec('225','w')
247     ),
248     );
249    
250     marc('440','x',
251     rec('225','x')
252     );
253    
254 dpavlin 751 #marc('490','v',
255     # join2_with(225, 'v', ' , ', 225,'w');
256     # join_with(', ',
257     # rec('225','v'),
258     # rec('225','w')
259     # )
260     #);
261    
262     marc('500','a',
263     rec('300')
264     );
265    
266     marc('500','a',
267 dpavlin 773 rec('305')
268     );
269    
270     marc('500','a',
271     rec('307')
272     );
273    
274     marc('500','a',
275 dpavlin 751 rec('314')
276     );
277    
278     marc('504','a',
279     rec('320')
280     );
281    
282 dpavlin 758 ## napomene uz konverziju polja 327 (sadrzaj):
283 dpavlin 751 # NSK konvertira 327 (NP) u 501 (R)
284     # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
285     # standard i validacije dopu¹taju 501 (R) i 505 (R)
286    
287 dpavlin 758 ## FFPS 327 - sadrzaj
288     if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
289 dpavlin 773 marc_indicators('505', '0', ' ');
290 dpavlin 758 marc('505','a',
291     regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
292     rec('327')
293     )
294     );
295     }
296 dpavlin 751
297    
298 dpavlin 758 ## napomene uz konverziju polja 330:
299 dpavlin 751 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
300    
301    
302 dpavlin 758 # FFPS 330 (NP) - sa¾etak
303     if ( config() =~ m/ffps/ ) {
304     marc('520','a',
305     regex('s/[\\r\\n]+/. /g',
306     rec('330')
307     )
308     );
309     }
310 dpavlin 751
311 dpavlin 758 # FFTU 330 - ???
312     if ( config() =~ m/fftu/ ) {
313     marc('520','a',
314 dpavlin 751 rec('330')
315 dpavlin 758 );
316 dpavlin 751 }
317    
318 dpavlin 773 marc('538','a',
319     rec('337','a')
320     );
321 dpavlin 758
322 dpavlin 773
323 dpavlin 751 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
324    
325 dpavlin 758 marc_indicators('246', 1, 3);
326     marc('246','a',
327     rec('532')
328     );
329    
330 dpavlin 751 marc_indicators('655', ' ', 4);
331     marc('655','a',
332     rec('608')
333     );
334    
335 dpavlin 758 marc_indicators('653', 0, ' ');
336 dpavlin 751 marc('653','a',
337     rec('610')
338     );
339    
340     # 675 podpolja c, d ... - ¹to s njima ???
341    
342     marc('080','a',
343     rec('675','a')
344     );
345    
346     # 084 je other classification (R)
347     # NSK ga koristi za struènu oznaku NSK iz polja 681
348     # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
349     #
350     # polje 686 koristi FFPS
351    
352     marc('084','a',
353     rec('686')
354     );
355    
356     marc_indicators('100', 1, ' ');
357     marc('100','a',
358     join_with(', ',
359     rec('700', 'a'),
360     rec('700', 'b')
361     )
362     );
363    
364     #_debug(2);
365    
366     marc_indicators('700', 1, ' ');
367    
368     if ( rec('701') ) {
369     marc('700','4',
370     'aut'
371     );
372     }
373    
374     marc('700','a',
375 dpavlin 758 join_with(', ',
376     rec('701', 'a'),
377     rec('701', 'b')
378     )
379 dpavlin 751 );
380    
381     marc('700','a',
382     join_with(', ',
383     rec('701', 'c'),
384     rec('701', 'd')
385     )
386     );
387    
388     marc('700','a',
389     join_with(', ',
390     rec('701', 'e'),
391     rec('701', 'f')
392     )
393     );
394    
395     marc('700','a',
396     join_with(', ',
397     rec('701', 'g'),
398     rec('701', 'h')
399     )
400     );
401    
402    
403     marc('700','a',
404     rec('702','a'),
405     );
406    
407    
408 dpavlin 758 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
409 dpavlin 751
410    
411     marc('700','a',
412     join_with(', ',
413     rec('702','c'),
414     rec('702','d')
415     )
416     );
417    
418     marc('700','a',
419     join_with(', ',
420     rec('702','e'),
421     rec('702','f')
422     )
423     );
424    
425     marc('700','a',
426     join_with(', ',
427     rec('702','g'),
428     rec('702','h')
429     )
430     );
431    
432 dpavlin 758 ## 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 druge osobe?
433    
434    
435 dpavlin 751 # marc('700','a',
436     # rec('330','a')
437     # );
438     #
439     #
440     # marc('700','a',
441     # rec('330','b')
442     # );
443     #
444     # marc('700','a',
445     # rec('330','c')
446     # );
447     #
448     #
449     # marc('700','a',
450     # rec('330','d')
451     # );
452     #
453     # marc('700','a',
454     # rec('330','e')
455     # );
456     #
457     # marc('700','a',
458     # rec('330','f')
459     # );
460    
461     #_debug(0);
462    
463    
464     if ( rec('710','f') ) {
465    
466     marc_indicators('111', 2, ' ');
467     marc('111','a',
468     rec('710','a')
469     );
470    
471     marc('111','c',
472     rec('710','e')
473     );
474    
475     marc('111','d',
476     rec('710','f')
477     );
478    
479     marc('111','e',
480     rec('710','b')
481     );
482    
483     marc('111','n',
484     rec('710','d')
485     );
486    
487    
488     } else {
489    
490     marc_indicators('110', 2, ' ');
491     marc('110','a',
492     rec('710','a')
493     );
494    
495     marc('110','c',
496     rec('710','c')
497     );
498    
499     };
500    
501    
502     marc_indicators('740', 0, ' ');
503    
504 dpavlin 783 # if ( ! rec('464') ) {
505     # marc('740','a',
506     # rec('200','c')
507     # );
508 dpavlin 751
509 dpavlin 783 # marc('740','a',
510     # rec('200','k')
511     # );
512 dpavlin 751
513 dpavlin 783 # } else {
514 dpavlin 751
515 dpavlin 783 marc('740','a',
516     rec('464','a')
517     );
518 dpavlin 751
519 dpavlin 783 # };
520 dpavlin 751
521 dpavlin 783
522    
523 dpavlin 751 ## vi¹erazinci
524    
525     if ( rec('230') ) {
526    
527     marc_duplicate();
528    
529     marc_remove('035');
530     marc('035','6',
531     join_with('',
532     config(),
533     rec('000'),
534 dpavlin 758 '-',
535 dpavlin 751 id(),
536     )
537     );
538    
539    
540     marc_remove('245');
541    
542     if ( rec('230','a') ) {
543     marc_compose('245',
544     'a', suffix(
545     rec('230','b') ? '. ' :
546     rec('230','k') ? ' ; ' :
547     rec('230','d') ? ' = ' :
548     rec('230','e') ? ' : ' :
549     rec('230','f') ? ' / ' :
550     '.',
551     rec('230','a')
552     ),
553     'b',
554     join_with(' ; ',
555     rec('230','k'),
556     ),
557     'b', rec('230','d'),
558     'b',
559     join_with(' : ',
560     rec('230','e'),
561     ),
562     'c',
563     join_with(' ; ',
564     rec('230','f'),
565     ),
566     );
567    
568     } else {
569    
570     marc_compose('245',
571     'a', suffix(
572     rec('230','b') ? '. ' :
573     rec('230','k') ? ' ; ' :
574     rec('230','d') ? ' = ' :
575     rec('230','e') ? ' : ' :
576     rec('230','f') ? ' / ' :
577     '.',
578     rec('200','a')
579     ),
580     'b',
581     join_with(' ; ',
582     rec('230','k'),
583     ),
584     'b', rec('230','d'),
585     'b',
586     join_with(' : ',
587     rec('230','e'),
588     ),
589     'c',
590     join_with(' ; ',
591     rec('230','f'),
592     ),
593     'n', rec('230','v'),
594     );
595    
596     }
597    
598     marc_remove('260');
599 dpavlin 758
600     # marc_original_order('260', '250');
601    
602 dpavlin 751 marc('260','c',
603 dpavlin 758 rec1('251')
604 dpavlin 751 );
605    
606 dpavlin 758
607     # marc('260','a',
608     # rec('251','a')
609     # );
610     # marc('260','b',
611     # rec('251','c')
612     # );
613     # marc('260','c',
614     # rec('251','d'),
615     # rec1('251')
616     # );
617    
618 dpavlin 751 marc_remove('300');
619     marc('300','a',
620     rec('260')
621     );
622    
623 dpavlin 783 marc_remove('440');
624     marc('440','a',
625 dpavlin 751 rec('270')
626     );
627    
628     marc_remove('500');
629     marc('500','a',
630     rec('280')
631     );
632    
633     marc_remove('020');
634     marc('020','a',
635     rec('290')
636     );
637    
638     marc_indicators('774', 0, ' ');
639     marc('774','g',
640     rec('230','v')
641     );
642    
643     marc('774','t',
644     rec('200','a')
645     );
646    
647     marc('774','w',
648     join_with('',
649     config(),
650     rec('000')
651     )
652     );
653    
654    
655     };
656    
657 dpavlin 783 my $nak_cj = get( rec('225','a') );
658    
659     if ($nak_cj) {
660    
661     marc('760','w',
662     $nak_cj
663     );
664    
665     }
666    
667 dpavlin 773 marc_indicators('776', 0, ' ');
668    
669     marc('776','a',
670     rec('452','1')
671     );
672    
673 dpavlin 783 #marc('900','a',
674     # lookup(
675     # sub { rec('000') },
676     # 'ffps','libri',
677     # sub { rec('200','a') . rec('200','f') . rec('205') },
678     # )
679     #);
680 dpavlin 773
681 dpavlin 783 #marc('901','a',
682     # lookup(
683     # sub { 'NSK: ' . rec('200','a') },
684     # 'nsk','baza',
685     # sub { rec('200','a') },
686     # sub { rec('10') }
687     # )
688     #);
689 dpavlin 773
690 dpavlin 783 if ( ! rec('464') && rec('200','c') ) {
691     marc('003','a',
692     'ima-200c-nema-464'
693     );
694 dpavlin 751 }
695 dpavlin 783
696     if ( ! rec('464') && rec('200','k') ) {
697     marc('005','a',
698     'ima-200k-nema-464'
699     );
700     }
701    
702     if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) {
703     marc('006','a',
704     'ima-464-nema-200c-ili-200k'
705     );
706     }
707    
708    
709    
710     }

  ViewVC Help
Powered by ViewVC 1.1.26