/[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 751 - (show annotations)
Sun Oct 8 13:25:11 2006 UTC (17 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 7946 byte(s)
local

1 if ( rec('200','a') ) {
2
3 # Leader
4 # raspraviti 17,18
5
6 # u nekim knji¾nicama koristi se 999a i 999b
7
8
9 # vrijedi za ffan...
10
11 if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {
12 marc_leader('05','c');
13 } else {
14 marc_leader('05','n');
15 }
16
17 marc_leader('06','a');
18 marc_leader('07','m');
19 marc_leader('18','i');
20
21 if ( rec('230') ) {
22 marc_leader('19','r');
23 }
24
25
26 # 001 polje - Voyager
27
28 # polje 035 je u NSK ponovljivo. za¹to ???
29
30 # privemeno koristimo 0356 umjesto 0359, zato ¹to marclint 9 prijavljuje kao gre¹ku
31
32 marc('035','6',
33 join_with('',
34 # config('input normalize path'),
35 # config('name'),
36 # config('input name'),
37 config(),
38 # id(),
39 # rec('994','a'),
40 rec('000')
41 )
42 );
43
44 # u marc 035a treba dodati System Number -
45 # NSK zapisuje Voyagerov ID (001) - kako ???
46
47 # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '
48
49 marc('020','a',
50 rec('10')
51 );
52
53 # u polje 040a mo¾da jo¹ dodati prefiks HR
54 # NSK ima HR NSB (mo¾da u novijim zapisima ima NSK?)
55
56 marc('040','a',
57 'HR FFZG'
58 );
59
60 marc('040','b',
61 'hrv'
62 );
63
64 if (rec('300') && first(rec('300')) =~ m/prijevod/i) {
65 marc_indicators('041', 1, ' ');
66 } else {
67 marc_indicators('041', 0, ' ');
68 }
69
70 marc_repeatable_subfield('041','a',
71 rec('101')
72 );
73
74
75 ## pitati dobricu
76
77 if ( rec('200') && first(rec('200')) =~ m/Die /i) {
78 marc_indicators('245', 0, 4);
79 } else {
80 marc_indicators('245', 0, 0);
81 }
82
83 #_debug(3);
84
85 marc_compose('245',
86 'a', suffix(
87 rec('200','b') ? '. ' :
88 rec('200','k') ? ' ; ' :
89 rec('200','d') ? ' = ' :
90 rec('200','e') ? ' : ' :
91 rec('200','f') ? ' / ' :
92 '.',
93 rec('200','a')
94 ),
95 'h', rec('200','b'),
96 'b', suffix(
97 ( rec('200','k') && rec('200','f') ) ? ' / ' :
98 ' ',
99 join_with(' ; ',
100 rec('200','k'),
101 ),
102 ),
103 'b', suffix(
104 ( rec('200','d') && rec('200','f') ) ? ' / ' :
105 ' ',
106 rec('200','d'),
107 ),
108 'b', suffix(
109 ( rec('200','e') && rec('200','f') ) ? ' / ' :
110 ' ',
111 join_with(' : ',
112 rec('200','e'),
113 ),
114 ),
115
116 # ovo trenutno radi za sluèaj kad f nije ponovljivo i kad uvijek postoje c i f u paru !!!
117 'c', join_with('. ',
118 rec('200','f'),
119 rec('200','c'),
120 ),
121 # FIXME append to last subfield
122 # '+', prefix('. ', rec('200','c') ),
123 );
124
125
126 #_debug(0);
127
128 marc('250','a',
129 suffix(
130 rec('205','f') ? ' / ' :
131 ' '.
132 rec('205','a')
133 )
134 );
135
136 marc('250','b',
137 rec('205','f')
138 );
139
140 # ponovljiva potpolja u originalnom redosljedu
141 #
142 marc_original_order('260', '210');
143
144
145 # provjeriti interpunkcije !!
146 marc('300','a',
147 suffix(
148 rec('215','c') ? ' : ' :
149 rec('215','d') ? ' ; ' :
150 rec('215','e') ? ' + ' :
151 ' ',
152 rec('215','a')
153 )
154 );
155
156 marc('300','b',
157 suffix(
158 ( rec('215','c') && rec('215','d') ) ? ' : ' :
159 ( rec('215','c') && rec('215','e') ) ? ' + ' :
160 ' ',
161 rec('215','c')
162 )
163 );
164
165 marc('300','c',
166 suffix(
167 rec('215','e') ? ' + ' :
168 ' ',
169 rec('215','d')
170 )
171 );
172
173 marc('300','e',
174 rec('215','e')
175 );
176
177
178 marc_indicators('490', 0, ' ');
179
180 marc('490','a',
181 rec('225','a')
182 );
183
184 #marc('490','a',
185 # join_with(' : ',
186 # rec('225','a'),
187 # join_with(" = ",
188 # rec('225','d'),
189 # join_with(" / ",
190 # rec('225','e'),
191 # rec('225','f')
192 # )
193 # )
194 # )
195 #);
196
197 #marc('490','v',
198 # join2_with(225, 'v', ' , ', 225,'w');
199 # join_with(', ',
200 # rec('225','v'),
201 # rec('225','w')
202 # )
203 #);
204
205 marc('500','a',
206 rec('300')
207 );
208
209 marc('500','a',
210 rec('314')
211 );
212
213 marc('504','a',
214 rec('320')
215 );
216
217 # napomene uz konverziju polja sa sadr¾ajem:
218 # NSK konvertira 327 (NP) u 501 (R)
219 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
220 # standard i validacije dopu¹taju 501 (R) i 505 (R)
221 # FFPS koristi 327 (P)
222 # FFIZ koristi 327
223
224
225 marc_indicators('505', '0', ' ');
226
227 marc('505','a',
228 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
229 rec('327')
230 )
231 );
232
233 # napomene uz konverziju polja 330:
234 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
235
236 # FFAN - (NP) - sadr¾aj, pitati Milu da li je to cijeli sadraj ili nije
237 #
238 # FFIZ koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja, sa¾eci
239 # FFFO koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja
240 # FFPS koristi 330 (NP) - sa¾etak
241
242 if ( config() =~ m/ffan/i || config() =~ m/fflo/i ) {
243
244 marc('520','a',
245 regex('s/[\\r\\n]+/. /g',
246 rec('330')
247 )
248 );
249
250 }
251
252 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
253
254 marc_indicators('655', ' ', 4);
255 marc('655','a',
256 rec('608')
257 );
258
259 marc_indicators('653', ' ', ' ');
260 marc('653','a',
261 rec('610')
262 );
263
264 # 675 podpolja c, d ... - ¹to s njima ???
265
266 marc('080','a',
267 rec('675','a')
268 );
269
270 # 084 je other classification (R)
271 # NSK ga koristi za struènu oznaku NSK iz polja 681
272 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
273 #
274 # polje 686 koristi FFPS
275
276 marc('084','a',
277 rec('686')
278 );
279
280 marc_indicators('100', 1, ' ');
281 marc('100','a',
282 join_with(', ',
283 rec('700', 'a'),
284 rec('700', 'b')
285 )
286 );
287
288 #_debug(2);
289
290 marc_indicators('700', 1, ' ');
291
292 if ( rec('701') ) {
293 marc('700','4',
294 'aut'
295 );
296 }
297
298 marc('700','a',
299 rec('701', 'a'),
300 );
301
302 marc('700','a',
303 join_with(', ',
304 rec('701', 'c'),
305 rec('701', 'd')
306 )
307 );
308
309 marc('700','a',
310 join_with(', ',
311 rec('701', 'e'),
312 rec('701', 'f')
313 )
314 );
315
316 marc('700','a',
317 join_with(', ',
318 rec('701', 'g'),
319 rec('701', 'h')
320 )
321 );
322
323
324 marc('700','a',
325 rec('702','a'),
326 );
327
328
329 # ako je u originalu ponovljivo polje treba biti i konvertirano!!
330
331
332 marc('700','a',
333 join_with(', ',
334 rec('702','c'),
335 rec('702','d')
336 )
337 );
338
339 marc('700','a',
340 join_with(', ',
341 rec('702','e'),
342 rec('702','f')
343 )
344 );
345
346 marc('700','a',
347 join_with(', ',
348 rec('702','g'),
349 rec('702','h')
350 )
351 );
352
353 ## 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 drugeosobe?
354 #
355 # marc('700','a',
356 # rec('330','a')
357 # );
358 #
359 #
360 # marc('700','a',
361 # rec('330','b')
362 # );
363 #
364 # marc('700','a',
365 # rec('330','c')
366 # );
367 #
368 #
369 # marc('700','a',
370 # rec('330','d')
371 # );
372 #
373 # marc('700','a',
374 # rec('330','e')
375 # );
376 #
377 # marc('700','a',
378 # rec('330','f')
379 # );
380
381 #_debug(0);
382
383
384 if ( rec('710','f') ) {
385
386 marc_indicators('111', 2, ' ');
387 marc('111','a',
388 rec('710','a')
389 );
390
391 marc('111','c',
392 rec('710','e')
393 );
394
395 marc('111','d',
396 rec('710','f')
397 );
398
399 marc('111','e',
400 rec('710','b')
401 );
402
403 marc('111','n',
404 rec('710','d')
405 );
406
407
408 } else {
409
410 marc_indicators('110', 2, ' ');
411 marc('110','a',
412 rec('710','a')
413 );
414
415 marc('110','c',
416 rec('710','c')
417 );
418
419 };
420
421
422 marc_indicators('740', 0, ' ');
423
424 if ( ! rec('464') ) {
425 marc('740','a',
426 rec('200','c')
427 );
428
429 marc('740','a',
430 rec('200','k')
431 );
432
433 } else {
434 marc('740','a',
435 rec('464','a')
436 );
437 };
438
439
440
441 ## vi¹erazinci
442
443 if ( rec('230') ) {
444
445 marc('900','a',
446 id()
447 );
448
449 marc_duplicate();
450
451 marc_remove('035');
452 marc('035','6',
453 join_with('',
454 config(),
455 rec('000'),
456 id(),
457 )
458 );
459
460
461 marc_remove('245');
462
463 if ( rec('230','a') ) {
464 marc_compose('245',
465 'a', suffix(
466 rec('230','b') ? '. ' :
467 rec('230','k') ? ' ; ' :
468 rec('230','d') ? ' = ' :
469 rec('230','e') ? ' : ' :
470 rec('230','f') ? ' / ' :
471 '.',
472 rec('230','a')
473 ),
474 'b',
475 join_with(' ; ',
476 rec('230','k'),
477 ),
478 'b', rec('230','d'),
479 'b',
480 join_with(' : ',
481 rec('230','e'),
482 ),
483 'c',
484 join_with(' ; ',
485 rec('230','f'),
486 ),
487 );
488
489 } else {
490
491 marc_compose('245',
492 'a', suffix(
493 rec('230','b') ? '. ' :
494 rec('230','k') ? ' ; ' :
495 rec('230','d') ? ' = ' :
496 rec('230','e') ? ' : ' :
497 rec('230','f') ? ' / ' :
498 '.',
499 rec('200','a')
500 ),
501 'b',
502 join_with(' ; ',
503 rec('230','k'),
504 ),
505 'b', rec('230','d'),
506 'b',
507 join_with(' : ',
508 rec('230','e'),
509 ),
510 'c',
511 join_with(' ; ',
512 rec('230','f'),
513 ),
514 'n', rec('230','v'),
515 );
516
517 }
518
519 marc_remove('260');
520 marc('260','c',
521 rec('250')
522 );
523
524 marc_remove('300');
525 marc('300','a',
526 rec('260')
527 );
528
529 marc_remove('490');
530 marc('490','a',
531 rec('270')
532 );
533
534 marc_remove('500');
535 marc('500','a',
536 rec('280')
537 );
538
539 marc_remove('020');
540 marc('020','a',
541 rec('290')
542 );
543
544 marc_indicators('774', 0, ' ');
545 marc('774','g',
546 rec('230','v')
547 );
548
549 marc('774','t',
550 rec('200','a')
551 );
552
553 marc('774','w',
554 join_with('',
555 config(),
556 rec('000')
557 )
558 );
559
560
561 };
562
563 }

  ViewVC Help
Powered by ViewVC 1.1.26