|
Lines 76-86
use Koha::SimpleMARC qw(read_field);
Link Here
|
| 76 |
&marc2ris |
76 |
&marc2ris |
| 77 |
); |
77 |
); |
| 78 |
|
78 |
|
| 79 |
our $utf; |
79 |
our $marcprint = 0; # Debug flag; |
| 80 |
our $intype; |
|
|
| 81 |
our $marcprint; |
| 82 |
our $protoyear; |
| 83 |
|
| 84 |
|
80 |
|
| 85 |
=head1 marc2bibtex - Convert from UNIMARC to RIS |
81 |
=head1 marc2bibtex - Convert from UNIMARC to RIS |
| 86 |
|
82 |
|
|
Lines 97-104
sub marc2ris {
Link Here
|
| 97 |
my $output; |
93 |
my $output; |
| 98 |
|
94 |
|
| 99 |
my $marcflavour = C4::Context->preference("marcflavour"); |
95 |
my $marcflavour = C4::Context->preference("marcflavour"); |
| 100 |
$intype = lc($marcflavour); |
96 |
my $intype = lc($marcflavour); |
| 101 |
my $marcprint = 0; # Debug flag; |
|
|
| 102 |
|
97 |
|
| 103 |
# Let's redirect stdout |
98 |
# Let's redirect stdout |
| 104 |
open my $oldout, ">&STDOUT"; |
99 |
open my $oldout, ">&STDOUT"; |
|
Lines 113-119
sub marc2ris {
Link Here
|
| 113 |
if ( $intype eq "marc21" ) { |
108 |
if ( $intype eq "marc21" ) { |
| 114 |
if ( $leader =~ /^.{9}a/ ) { |
109 |
if ( $leader =~ /^.{9}a/ ) { |
| 115 |
print "<marc>---\r\n<marc>UTF-8 data\r\n" if $marcprint; |
110 |
print "<marc>---\r\n<marc>UTF-8 data\r\n" if $marcprint; |
| 116 |
$utf = 1; |
|
|
| 117 |
} |
111 |
} |
| 118 |
else { |
112 |
else { |
| 119 |
print "<marc>---\r\n<marc>MARC-8 data\r\n" if $marcprint; |
113 |
print "<marc>---\r\n<marc>MARC-8 data\r\n" if $marcprint; |
|
Lines 395-415
sub print_typetag {
Link Here
|
| 395 |
## hints |
389 |
## hints |
| 396 |
|
390 |
|
| 397 |
my %typehash; |
391 |
my %typehash; |
| 398 |
|
392 |
my $marcflavour = C4::Context->preference("marcflavour"); |
| 399 |
## the ukmarc here is just a guess |
393 |
my $intype = lc($marcflavour); |
| 400 |
if (! defined $intype) { |
394 |
if ($intype eq "unimarc") { |
| 401 |
## assume MARC21 as default |
395 |
%typehash = %unitypehash; |
| 402 |
%typehash = %ustypehash; |
|
|
| 403 |
} |
| 404 |
elsif ($intype eq "marc21" || $intype eq "ukmarc") { |
| 405 |
%typehash = %ustypehash; |
| 406 |
} |
| 407 |
elsif ($intype eq "unimarc") { |
| 408 |
%typehash = %unitypehash; |
| 409 |
} |
396 |
} |
| 410 |
else { |
397 |
else { |
| 411 |
## assume MARC21 as default |
398 |
%typehash = %ustypehash; |
| 412 |
%typehash = %ustypehash; |
|
|
| 413 |
} |
399 |
} |
| 414 |
|
400 |
|
| 415 |
if (!defined $typeofrecord || !exists $typehash{$typeofrecord}) { |
401 |
if (!defined $typeofrecord || !exists $typehash{$typeofrecord}) { |
|
Lines 482-487
sub get_author {
Link Here
|
| 482 |
|
468 |
|
| 483 |
## the sequence of the name parts is encoded either in indicator |
469 |
## the sequence of the name parts is encoded either in indicator |
| 484 |
## 1 (marc21) or 2 (unimarc) |
470 |
## 1 (marc21) or 2 (unimarc) |
|
|
471 |
my $marcflavour = C4::Context->preference("marcflavour"); |
| 472 |
my $intype = lc($marcflavour); |
| 485 |
if ($intype eq "unimarc") { |
473 |
if ($intype eq "unimarc") { |
| 486 |
$indicator = 2; |
474 |
$indicator = 2; |
| 487 |
} |
475 |
} |
|
Lines 552-557
$clean_subtitle ||= q{};
Link Here
|
| 552 |
$clean_title =~ s% *[/:;.]$%%; |
540 |
$clean_title =~ s% *[/:;.]$%%; |
| 553 |
$clean_subtitle =~ s%^ *(.*) *[/:;.]$%$1%; |
541 |
$clean_subtitle =~ s%^ *(.*) *[/:;.]$%$1%; |
| 554 |
|
542 |
|
|
|
543 |
my $marcflavour = C4::Context->preference("marcflavour"); |
| 544 |
my $intype = lc($marcflavour); |
| 555 |
if (length($clean_title) > 0 |
545 |
if (length($clean_title) > 0 |
| 556 |
|| (length($clean_subtitle) > 0 && $intype ne "unimarc")) { |
546 |
|| (length($clean_subtitle) > 0 && $intype ne "unimarc")) { |
| 557 |
print "TI - ", $clean_title; |
547 |
print "TI - ", $clean_title; |
|
Lines 591-596
sub print_stitle {
Link Here
|
| 591 |
print "T2 - ", $clean_title,"\r\n"; |
581 |
print "T2 - ", $clean_title,"\r\n"; |
| 592 |
} |
582 |
} |
| 593 |
|
583 |
|
|
|
584 |
my $marcflavour = C4::Context->preference("marcflavour"); |
| 585 |
my $intype = lc($marcflavour); |
| 594 |
if ($intype eq "unimarc") { |
586 |
if ($intype eq "unimarc") { |
| 595 |
print "<marc>Series vol(\$v): ",$titlefield->subfield('v'),"\r\n" if $marcprint; |
587 |
print "<marc>Series vol(\$v): ",$titlefield->subfield('v'),"\r\n" if $marcprint; |
| 596 |
if (length($titlefield->subfield('v')) > 0) { |
588 |
if (length($titlefield->subfield('v')) > 0) { |
|
Lines 726-731
sub print_pubinfo {
Link Here
|
| 726 |
my $pubsub_publisher; |
718 |
my $pubsub_publisher; |
| 727 |
my $pubsub_date; |
719 |
my $pubsub_date; |
| 728 |
|
720 |
|
|
|
721 |
my $marcflavour = C4::Context->preference("marcflavour"); |
| 722 |
my $intype = lc($marcflavour); |
| 729 |
if ($intype eq "unimarc") { |
723 |
if ($intype eq "unimarc") { |
| 730 |
$pubsub_place = "a"; |
724 |
$pubsub_place = "a"; |
| 731 |
$pubsub_publisher = "c"; |
725 |
$pubsub_publisher = "c"; |
|
Lines 758-764
sub print_pubinfo {
Link Here
|
| 758 |
## the dates are free-form, so we want to extract |
752 |
## the dates are free-form, so we want to extract |
| 759 |
## a four-digit year and leave the rest as |
753 |
## a four-digit year and leave the rest as |
| 760 |
## "other info" |
754 |
## "other info" |
| 761 |
$protoyear = @$tuple[1]; |
755 |
my $protoyear = @$tuple[1]; |
| 762 |
print "<marc>Year (260\$c): $protoyear\r\n" if $marcprint; |
756 |
print "<marc>Year (260\$c): $protoyear\r\n" if $marcprint; |
| 763 |
|
757 |
|
| 764 |
## strip any separator chars at the end |
758 |
## strip any separator chars at the end |
| 765 |
- |
|
|