/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 773 - (show 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 # ne konvertira se ako nema polje 200^a
2
3 if ( rec('200','a') ) {
4
5 # Leader
6 # raspraviti 17,18
7 #
8 # u nekim knji¾nicama koristi se 999a i 999b
9 #
10 # 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 #
28 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
29 # u marc 035a - System Number - ??
30 # NSK zapisuje Voyagerov ID (001) - kako ???
31
32
33 marc('035','6',
34 join_with('',
35 # config('input normalize path'),
36 # config('name'),
37 config(),
38 'L',
39 # 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
54 # u polje 040a - prefiks HR ?
55 # 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 marc('040','e',
66 'HR PPIAK'
67 );
68
69 if ( rec('300') && first(rec('300')) =~ m/Prijevod/) {
70 marc_indicators('041', 1, ' ');
71 } else {
72 marc_indicators('041', 0, ' ');
73 }
74
75 ## naæi primjer u NSK
76
77 marc_repeatable_subfield('041','a',
78 rec('101')
79 );
80
81 # indikatori za èlanove. treba uvjetovati prema jezicima !!
82
83 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 } 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
150 marc_original_order('260', '210');
151
152
153 # provjeriti interpunkcije !!
154 # u NSK nesto ne stima
155
156 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 ( rec('215','c') && rec('215','d') ) ? ' ; ' :
169 ( 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 # provjeriti
189
190 marc_indicators('490', 0, ' ');
191
192 marc('490','a',
193 rec('225','a')
194 );
195
196 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 #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 rec('305')
234 );
235
236 marc('500','a',
237 rec('307')
238 );
239
240 marc('500','a',
241 rec('314')
242 );
243
244 marc('504','a',
245 rec('320')
246 );
247
248 ## napomene uz konverziju polja 327 (sadrzaj):
249 # 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 ## FFPS 327 - sadrzaj
254 if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) {
255 marc_indicators('505', '0', ' ');
256 marc('505','a',
257 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
258 rec('327')
259 )
260 );
261 }
262
263
264 ## napomene uz konverziju polja 330:
265 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
266
267
268 # 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
277 # FFTU 330 - ???
278 if ( config() =~ m/fftu/ ) {
279 marc('520','a',
280 rec('330')
281 );
282 }
283
284 marc('538','a',
285 rec('337','a')
286 );
287
288
289 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
290
291 marc_indicators('246', 1, 3);
292 marc('246','a',
293 rec('532')
294 );
295
296 marc_indicators('655', ' ', 4);
297 marc('655','a',
298 rec('608')
299 );
300
301 marc_indicators('653', 0, ' ');
302 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 join_with(', ',
342 rec('701', 'a'),
343 rec('701', 'b')
344 )
345 );
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 # ako je u originalu ponovljivo polje treba biti i konvertirano u ponovljivo !!
375
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 ## 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 # 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 '-',
499 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
564 # marc_original_order('260', '250');
565
566 marc('260','c',
567 rec1('251')
568 );
569
570
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 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 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 }

  ViewVC Help
Powered by ViewVC 1.1.26