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