/usr/share/perl5/Catmandu/Exporter/MARC/Base.pm is in libcatmandu-marc-perl 0.206-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | package Catmandu::Exporter::MARC::Base;
use Moo::Role;
use MARC::Record;
use MARC::Field;
sub _raw_to_marc_record {
my ($self,$data) = @_;
my $marc = MARC::Record->new();
for my $field (@$data) {
my ($tag, $ind1, $ind2, @data) = @$field;
if ($tag eq 'LDR') {
$marc->leader($data[1]);
}
elsif ($tag =~ /^00/) {
my $field = MARC::Field->new($tag,$data[1]);
$marc->append_fields($field);
}
else {
my $field = MARC::Field->new($tag, $ind1, $ind2, @data);
$marc->append_fields($field);
}
}
$marc;
}
sub _json_to_raw {
my ($self,$data) = @_;
my @record = ();
push (@record , [ 'LDR', ' ', ' ', '_' , $data->{leader}] ) if defined $data->{leader};
for my $field (@{$data->{fields}}) {
my ($tag) = keys %$field;
my $val = $field->{$tag};
if (ref $val) {
my $ind1 = $val->{ind1} // ' ';
my $ind2 = $val->{ind2} // ' ';
my @parts;
for my $subfield (@{$val->{subfields}}) {
my ($code) = keys %$subfield;
my $str = $subfield->{$code};
push @parts , $code, $str;
}
push @record , [ $tag, $ind1 , $ind2 , @parts];
}
else {
push @record , [ $tag, ' ' , ' ', '_', $val];
}
}
{ _id => $data->{_id} , record => \@record };
}
sub _clean_raw_data {
my ($self, $tag, @data) = @_;
my @result = ();
for (my $i = 0 ; $i < @data ; $i += 2) {
if (($tag =~ /^00/ || defined $data[$i]) && defined $data[$i+1] && $data[$i+1] =~ /\S+/) {
push(@result, $data[$i], $data[$i+1]);
}
}
@result;
}
1;
|