File Coverage

blib/lib/MARC/File/MiJ.pm
Criterion Covered Total %
statement 24 27 88.8
branch 2 4 50.0
condition 0 3 0.0
subroutine 7 8 87.5
pod 2 2 100.0
total 35 44 79.5


line stmt bran cond sub pod time code
1             package MARC::File::MiJ;
2              
3 1     1   61139 use 5.006;
  1         5  
  1         45  
4 1     1   6 use strict;
  1         11  
  1         48  
5 1     1   7 use warnings FATAL => 'all';
  1         8  
  1         62  
6              
7 1     1   690 use MARC::Record::MiJ;
  1         4  
  1         41  
8 1     1   10 use base qw(MARC::File);
  1         2  
  1         2124  
9              
10             =head1 NAME
11              
12             MARC::File::MiJ - Read newline-delimited marc-in-json files
13              
14             =head1 VERSION
15              
16             Version 0.04
17              
18             =cut
19              
20             our $VERSION = '0.04';
21              
22              
23             =head1 SYNOPSIS
24              
25             Use by itself or with MARC::Batch
26              
27             use MARC::Batch;
28             use MARC::File::MiJ;
29              
30             my $reader = new MARC::Batch('MiJ', $jsonfilename);
31             while (my $r = $batch->next) { ... }
32              
33             # or, use it without MARC::Batch
34             my $reader = MARC::File::MiJ->in($jsonfilename);
35            
36             =head1 DESCRIPTION
37              
38             A subclass of MARC::File for reading MARC records encoded as newline-delimited marc-in-json,
39             as supported by pymarc/ruby-marc/marc4j and
40             described at http://dilettantes.code4lib.org/blog/2010/09/a-proposal-to-serialize-marc-in-json/.
41              
42              
43              
44             =head1 SUBROUTINES/METHODS
45              
46              
47             =head2 _next()
48              
49             The underlying "next" that pulls the next line from the filehandle;
50              
51             =cut
52              
53             sub _next {
54 11     11   148809 my $self = shift;
55 11         30 my $fh = $self->{fh};
56 11 100       181 return if eof($fh);
57 10         74 local $/ = "\n";
58 10         397 my $rec = <$fh>;
59 10         83 return $rec;
60             }
61              
62              
63              
64             =head2 decode(json)
65              
66             =cut
67              
68             sub decode {
69 10     10 1 62 my $self = shift;
70 10         27 my $str = shift;
71 10         55 return MARC::Record::MiJ->new($str);
72             }
73              
74              
75             =head2 encode
76              
77             =cut
78              
79             sub encode {
80 0     0 1   my $marc = shift;
81 0 0 0       $marc = shift if (ref($marc)||$marc) =~ /^MARC::File/;
82 0           return MARC::Record::MiJ->to_mij($marc);
83             }
84              
85              
86             =head1 AUTHOR
87              
88             Bill Dueber, C<< >>
89              
90             =head1 BUGS
91              
92             Please report any bugs or feature requests to C, or through
93             the web interface at L. I will be notified, and then you'll
94             automatically be notified of progress on your bug as I make changes.
95              
96              
97              
98              
99             =head1 SUPPORT
100              
101             You can find documentation for this module with the perldoc command.
102              
103             perldoc MARC::File::MiJ
104              
105              
106             You can also look for information at:
107              
108             =over 4
109              
110             =item * RT: CPAN's request tracker (report bugs here)
111              
112             L
113              
114             =item * AnnoCPAN: Annotated CPAN documentation
115              
116             L
117              
118             =item * CPAN Ratings
119              
120             L
121              
122             =item * Search CPAN
123              
124             L
125              
126             =back
127              
128              
129             =head1 ACKNOWLEDGEMENTS
130              
131              
132             =head1 LICENSE AND COPYRIGHT
133              
134             Copyright 2013 Bill Dueber.
135              
136             This software is free software and may be distributed under the same
137             terms as Perl itself.
138              
139              
140             =cut
141              
142             1; # End of MARC::File::MiJ