File Coverage

blib/lib/YAML/PP/Writer/File.pm
Criterion Covered Total %
statement 31 31 100.0
branch 6 6 100.0
condition n/a
subroutine 9 9 100.0
pod 3 3 100.0
total 49 49 100.0


line stmt bran cond sub pod time code
1 49     49   140822 use strict;
  49         64  
  49         1503  
2 49     49   170 use warnings;
  49         70  
  49         3268  
3             package YAML::PP::Writer::File;
4              
5             our $VERSION = 'v0.40.1'; # TRIAL VERSION
6              
7 49     49   207 use Scalar::Util qw/ openhandle /;
  49         82  
  49         2464  
8              
9 49     49   237 use base qw/ YAML::PP::Writer /;
  49         65  
  49         6033  
10              
11 49     49   316 use Carp qw/ croak /;
  49         150  
  49         12826  
12              
13             sub _open_handle {
14 6     6   9 my ($self) = @_;
15 6 100       20 if (openhandle($self->{output})) {
16 1         2 $self->{filehandle} = $self->{output};
17 1         2 return $self->{output};
18             }
19             open my $fh, '>:encoding(UTF-8)', $self->{output}
20 5 100       1155 or croak "Could not open '$self->{output}' for writing: $!";
21 4         270 $self->{filehandle} = $fh;
22 4         15 return $fh;
23             }
24              
25             sub write {
26 30     30 1 43 my ($self, $line) = @_;
27 30         35 my $fh = $self->{filehandle};
28 30         100 print $fh $line;
29             }
30              
31             sub init {
32 6     6 1 10 my ($self) = @_;
33 6         16 my $fh = $self->_open_handle;
34             }
35              
36             sub finish {
37 5     5 1 8 my ($self) = @_;
38 5 100       20 if (openhandle($self->{output})) {
39             # Original argument was a file handle, so the caller needs
40             # to close it
41 1         2 return;
42             }
43 4         439 close $self->{filehandle};
44             }
45              
46             1;
47              
48             __END__