File Coverage

blib/lib/YAML/PP/Reader.pm
Criterion Covered Total %
statement 39 48 81.2
branch 8 12 66.6
condition 3 8 37.5
subroutine 11 13 84.6
pod 0 5 0.0
total 61 86 70.9


line stmt bran cond sub pod time code
1             # ABSTRACT: Reader class for YAML::PP representing input data
2 52     52   143958 use strict;
  52         83  
  52         1523  
3 52     52   998 use warnings;
  52         83  
  52         18485  
4             package YAML::PP::Reader;
5              
6             our $VERSION = 'v0.40.1'; # TRIAL VERSION
7              
8 3     3 0 7 sub input { return $_[0]->{input} }
9 0     0 0 0 sub set_input { $_[0]->{input} = $_[1] }
10              
11             sub new {
12 12457     12457 0 22825 my ($class, %args) = @_;
13 12457         17574 my $input = delete $args{input};
14 12457         46262 return bless {
15             input => $input,
16             }, $class;
17             }
18              
19             sub read {
20 1     1 0 2 my ($self) = @_;
21 1   50     4 my $pos = pos $self->{input} || 0;
22 1         2 my $yaml = substr($self->{input}, $pos);
23 1         2 $self->{input} = '';
24 1         2 return $yaml;
25             }
26              
27             sub readline {
28 40445     40445 0 49073 my ($self) = @_;
29 40445 100       79579 unless (length $self->{input}) {
30 4450         7578 return;
31             }
32 35995 50       150243 if ( $self->{input} =~ m/\G([^\r\n]*(?:\n|\r\n|\r|\z))/g ) {
33 35995         65659 my $line = $1;
34 35995 100       55014 unless (length $line) {
35 7458         12031 $self->{input} = '';
36 7458         14140 return;
37             }
38 28537         56112 return $line;
39             }
40 0         0 return;
41             }
42              
43             package YAML::PP::Reader::File;
44              
45 52     52   308 use Scalar::Util qw/ openhandle /;
  52         73  
  52         3153  
46              
47             our @ISA = qw/ YAML::PP::Reader /;
48              
49 52     52   232 use Carp qw/ croak /;
  52         104  
  52         12254  
50              
51             sub open_handle {
52 28 100   28   129 if (openhandle( $_[0]->{input} )) {
53 1         3 return $_[0]->{input};
54             }
55             open my $fh, '<:encoding(UTF-8)', $_[0]->{input}
56 27 50   13   1261 or croak "Could not open '$_[0]->{input}' for reading: $!";
  13         7671  
  13         219  
  13         64  
57 27         13057 return $fh;
58             }
59              
60             sub read {
61 0   0 0   0 my $fh = $_[0]->{filehandle} ||= $_[0]->open_handle;
62 0 0       0 if (wantarray) {
63 0         0 my @yaml = <$fh>;
64 0         0 return @yaml;
65             }
66             else {
67 0         0 local $/;
68 0         0 my $yaml = <$fh>;
69 0         0 return $yaml;
70             }
71             }
72              
73             sub readline {
74 10613   66 10613   17762 my $fh = $_[0]->{filehandle} ||= $_[0]->open_handle;
75 10613         38021 return scalar <$fh>;
76             }
77              
78             1;