File Coverage

blib/lib/Text/APL/Writer.pm
Criterion Covered Total %
statement 25 26 96.1
branch 10 12 83.3
condition n/a
subroutine 7 7 100.0
pod 1 1 100.0
total 43 46 93.4


line stmt bran cond sub pod time code
1             package Text::APL::Writer;
2              
3 3     3   69440 use strict;
  3         13  
  3         83  
4 3     3   15 use warnings;
  3         5  
  3         75  
5              
6 3     3   15 use base 'Text::APL::Base';
  3         6  
  3         962  
7              
8             sub build {
9 26     26 1 39 my $self = shift;
10 26         43 my ($output) = @_;
11              
12 26         35 my $writer;
13              
14 26 100       112 if (!ref $output) {
    100          
    100          
    50          
15 1 50       75 open my $fh, '>', $output or die "Can't write to '$output': $!";
16 1     1   7 $writer = sub { print $fh $_[0] };
  1         51  
17             }
18             elsif (ref $output eq 'GLOB') {
19 1     1   14 $writer = sub { print $output $_[0] };
  1         14  
20             }
21             elsif (ref $output eq 'SCALAR') {
22 23         72 ${$output} = '';
  23         44  
23 23 100   47   82 $writer = sub { ${$output} .= $_[0] if defined $_[0] };
  47         297  
  25         232  
24             }
25             elsif (ref $output eq 'CODE') {
26 1         2 $writer = $output;
27             }
28             else {
29 0         0 die 'Do not know how to write';
30             }
31              
32 26         64 return $writer;
33             }
34              
35             1;
36             __END__