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

  ViewVC Help
Powered by ViewVC 1.1.26