/[webpac2]/trunk/conf/normalize/mapping.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/mapping.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 604 - (show annotations)
Sun Jul 30 14:19:54 2006 UTC (17 years, 8 months ago) by dpavlin
File MIME type: text/plain
File size: 5788 byte(s)
 r844@llin:  dpavlin | 2006-07-30 14:24:04 +0200
 first cut at marc_original_order

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
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('010')
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 #_debug(3);
75
76 marc_compose('245',
77 'a', suffix(
78 rec('200','b') ? '. ' :
79 rec('200','k') ? ' ; ' :
80 rec('200','d') ? ' = ' :
81 rec('200','e') ? ' : ' :
82 rec('200','f') ? ' / ' :
83 '.',
84 rec('200','a')
85 ),
86 'h', rec('200','b'),
87 'b', rec('200','k'),
88 'b', rec('200','d'),
89 'b', rec('200','e'),
90 'c', rec('200','f'),
91 # FIXME append to last subfield
92 '+', prefix('. ', rec('200','c') ),
93 );
94
95
96 #_debug(0);
97
98
99 # marc('245','a',
100 # rec('200','a')
101 # );
102 #
103 # marc('245','b',
104 # join_with(' : ',
105 # rec('200','d'),
106 # rec('200','e')
107 # )
108 # );
109 #
110 # marc('245','c',
111 # join_with(' ; ',
112 # rec('200','f'),
113 # rec('200','g')
114 # )
115 # );
116
117 marc('250','a',
118 rec('205','a')
119 );
120
121 # FIXME ponovljiva potpolja u originalnom redosljedu
122 #
123 marc_original_order('260', '210');
124
125 marc('260','a',
126 rec('210','a'),
127 );
128
129 marc('260','b',
130 rec('210','c'),
131 );
132
133 marc('260','c',
134 rec('210','d'),
135 );
136
137 # marc_compose('260',
138 # 'a', split_rec_on('210','a', qr/\s*;\s*/, 1),
139 # 'b', first(rec('210','c')),
140 # 'a', split_rec_on('210','a', qr/\s*;\s*/, 2),
141 # 'c', first(rec('210','d')),
142 # );
143
144 marc('300','a',
145 rec('215','a')
146 );
147
148 marc('300','b',
149 rec('215','c')
150 );
151
152 marc('300','c',
153 rec('215','d')
154 );
155
156 marc('300','e',
157 rec('215','e')
158 );
159
160
161 marc_indicators('490', 1, ' ');
162 marc('490','a',
163 join_with(' : ',
164 rec('225','a'),
165 join_with(" = ",
166 rec('225','d'),
167 join_with(" / ",
168 rec('225','e'),
169 rec('225','f')
170 )
171 )
172 )
173 );
174
175 marc('490','v',
176 # join2_with(225, 'v', ' , ', 225,'w');
177 join_with(', ',
178 rec('225','v'),
179 rec('225','w')
180 )
181 );
182
183 marc('500','a',
184 rec('300')
185 );
186
187 marc('500','a',
188 rec('314')
189 );
190
191 marc('504','a',
192 rec('320')
193 );
194
195 # napomene uz konverziju polja sa sadr¾ajem:
196 # NSK konvertira 327 (NP) u 501 (R)
197 # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
198 # standard i validacije dopu¹taju 501 (R) i 505 (R)
199 # FFPS koristi 327 (P)
200 # FFIZ koristi 327
201
202
203 marc_indicators('505', '0', ' ');
204 marc('505','a',
205 regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
206 rec('327')
207 )
208 );
209
210 # napomene uz konverziju polja 330:
211 # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
212 # FFIZ koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja, sa¾eci
213 # FFFO koristi 330 (P) - kljuène rijeèi, dijelovi sadr¾aja
214 # FFPS koristi 330 (NP) - sa¾etak
215
216 marc('520','a',
217 regex('s/[\\r\\n]+/. /g',
218 rec('330')
219 )
220 );
221
222 # mo¾da i polje 520y - jezik napomene ako je uvijek isti jezik
223
224 marc_indicators('655', ' ', 4);
225 marc('655','a',
226 rec('608')
227 );
228
229 marc_indicators('653', ' ', ' ');
230 marc('653','a',
231 rec('610')
232 );
233
234 # 675 podpolja c, d ... - ¹to s njima ???
235
236 marc('080','a',
237 rec('675','a')
238 );
239
240 # 084 je other classification (R)
241 # NSK ga koristi za struènu oznaku NSK iz polja 681
242 # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
243 #
244 # polje 686 koristi FFPS
245
246 marc('084','a',
247 rec('686')
248 );
249
250 marc_indicators('100', 1, ' ');
251 marc('100','a',
252 join_with(', ',
253 rec('700', 'a'),
254 rec('700', 'b')
255 )
256 );
257
258 #_debug(2);
259
260 marc_indicators('700', 1, ' ');
261
262 if ( rec('701') ) {
263 marc('700','4',
264 'aut'
265 );
266 }
267
268 marc('700','a',
269 rec('701', 'a'),
270 );
271
272 marc('700','a',
273 join_with(', ',
274 rec('701', 'c'),
275 rec('701', 'd')
276 )
277 );
278
279 marc('700','a',
280 join_with(', ',
281 rec('701', 'e'),
282 rec('701', 'f')
283 )
284 );
285
286 marc('700','a',
287 join_with(', ',
288 rec('701', 'g'),
289 rec('701', 'h')
290 )
291 );
292
293
294 marc('700','a',
295 rec('702','a'),
296 );
297
298
299 # ako je u originalu ponovljivo polje treba biti i konvertirano!!
300
301
302 marc('700','a',
303 join_with(', ',
304 rec('702','c'),
305 rec('702','d')
306 )
307 );
308
309 marc('700','a',
310 join_with(', ',
311 rec('702','e'),
312 rec('702','f')
313 )
314 );
315
316 marc('700','a',
317 join_with(', ',
318 rec('702','g'),
319 rec('702','h')
320 )
321 );
322
323 #_debug(0);
324
325
326 if ( rec('710','f') ) {
327
328 marc_indicators('111', 2, ' ');
329 marc('111','a',
330 rec('710','a')
331 );
332
333 marc('111','c',
334 rec('710','e')
335 );
336
337 marc('111','d',
338 rec('710','f')
339 );
340
341 marc('111','e',
342 rec('710','b')
343 );
344
345 marc('111','n',
346 rec('710','d')
347 );
348
349
350 } else {
351
352 marc_indicators('110', 2, ' ');
353 marc('110','a',
354 rec('710','a')
355 );
356
357 marc('110','c',
358 rec('710','c')
359 );
360
361 };
362
363
364 marc_indicators('740', 0, ' ');
365 marc('740','a',
366 rec('200','c')
367 );
368
369
370 # vi¹erazinci
371
372 if ( rec('230') ) {
373
374 marc_duplicate();
375 marc_remove('245');
376
377 marc('245','a',
378 rec('230','a')
379 );
380
381 if ( ! rec('230','a') ) {
382
383 marc('245','a',
384 rec('200','a')
385 );
386 }
387
388 marc('245','b',
389 rec('230','e')
390 );
391
392 marc('245','c',
393 rec('230','f')
394 );
395
396 marc('245','n',
397 rec('230','v')
398 );
399
400 }
401
402 if ( rec('231') ) {
403
404 marc_duplicate();
405 marc_remove('245');
406
407 marc('245','a',
408 rec('231','a')
409 );
410
411 if ( ! rec('231','a') ) {
412
413 marc('245','a',
414 rec('200','a')
415 );
416 }
417
418 marc('245','b',
419 rec('231','e')
420 );
421
422 marc('245','c',
423 rec('231','f')
424 );
425
426 marc('245','n',
427 rec('231','v')
428 );
429
430 }
431 }

  ViewVC Help
Powered by ViewVC 1.1.26