File Coverage

blib/lib/Catmandu/Exporter/RIS.pm
Criterion Covered Total %
statement 9 9 100.0
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 12 12 100.0


line stmt bran cond sub pod time code
1             package Catmandu::Exporter::RIS;
2              
3             our $VERSION = '0.12';
4              
5 1     1   59525 use namespace::clean;
  1         13380  
  1         5  
6 1     1   603 use Catmandu::Sane;
  1         172333  
  1         6  
7 1     1   260 use Moo;
  1         2  
  1         3  
8              
9             with 'Catmandu::Exporter';
10              
11             my $TAGS = [qw(TY A1 A2 A3 A4 AB AD AN AU AV BT C1 C2 C3 C4 C5 C6 C7 C8 CA CN
12             CP CT CY DA DB DO DP ED EP ET ID IS J1 J2 JA JF JO KW L1 L2 L3 L4
13             LA LB LK M1 M2 M3 N1 N2 NV OP PB PP PY RI RN RP SE SN SP ST T1 T2
14             T3 TA TI TT U1 U2 U3 U4 U5 UR VL VO Y1 Y2)];
15              
16             my $SMALL_TAG = qr/A2|AU|ED|EP|KW|PB|SP/;
17              
18             sub add {
19             my ($self, $data) = @_;
20             my $fh = $self->fh;
21              
22             for my $tag (@$TAGS) {
23             if (my $vals = $data->{$tag}) {
24             $vals = [$vals] unless ref $vals;
25             for my $val (@$vals) {
26             $val = substr($val, 255) if length($val) > 255 && $tag =~ $SMALL_TAG;
27             print $fh "$tag - $val\r\n";
28             }
29             }
30             }
31              
32             print $fh "ER - \r\n";
33             }
34              
35             1;
36              
37             __END__
38              
39             =pod
40              
41             =head1 NAME
42              
43             Catmandu::Exporter::RIS - a RIS exporter
44              
45             =head1 SYNOPSIS
46              
47             use Catmandu::Exporter::RIS;
48              
49             my $exporter = Catmandu::Exporter::RIS->new(fix => 'myfix.txt');
50              
51             $exporter->add_many($arrayref);
52             $exporter->add_many($iterator);
53             $exporter->add_many(sub { });
54              
55             $exporter->add($hashref);
56              
57             $exporter->add({
58             TI => 'the Zen of CSS design',
59             AU => ['Dave Shea','Molley E. Holzschlag'],
60             IS => '0-321-30347-4'
61             });
62              
63             printf "exported %d objects\n" , $exporter->count;
64              
65             =head1 DESCRIPTION
66              
67             The RIS exporter requires as input a Perl hash (or a fix) containing RIS
68             fields and values as a string or array reference.
69              
70             =head1 SUPPORTED FIELDS
71              
72             TY ID T1 TI CT T2 BT T3 A1 AU A2 ED A3 Y1 PY Y2 N1 AB N2 KW RP
73             JF JO JA J1 J2 VL IS CP SP EP CY PB SN AD AV M1 M2 M3 U1 U2 U3 U4 U5
74             UR L1 L2 L3 L4
75              
76             =head1 SEE ALSO
77              
78             L<Catmandu::Exporter>
79              
80             =cut