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

1 dpavlin 751 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