summaryrefslogtreecommitdiff
path: root/lib/Catmandu/Importer/Z3950/Parser/UNIMARC.pm
blob: ff7bb5fa6fc32fea2f1ad48b36e6a5865b77874d (plain)
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
package Catmandu::Importer::Z3950::Parser::UNIMARC;

use Catmandu::Sane;
use MARC::Parser::RAW;
use Moo;

our $VERSION = '0.06';

has 'id' => (is => 'ro' , default => sub { '001'} );

sub parse {
    my ($self,$str) = @_;
    my $sysid = undef;

    return undef unless defined $str;

    my $record = MARC::Parser::RAW->new(\$str)->next();

    foreach my $field (@$record) {
	if ($field->[0] eq '001') {
		$sysid = $field->[4];
	}
    }

    return { _id => $sysid , record => $record };
}

1;