File Coverage

blib/lib/App/WRT/FileIO.pm
Criterion Covered Total %
statement 35 54 64.8
branch 0 2 0.0
condition n/a
subroutine 12 22 54.5
pod 9 13 69.2
total 56 91 61.5


line stmt bran cond sub pod time code
1             package App::WRT::FileIO;
2              
3 10     10   102438 use strict;
  10         26  
  10         329  
4 10     10   50 use warnings;
  10         20  
  10         289  
5 10     10   536 use open qw(:std :utf8);
  10         1347  
  10         65  
6              
7 10     10   1246 use Carp;
  10         33  
  10         503  
8 10     10   625 use Encode;
  10         10497  
  10         699  
9 10     10   5427 use File::Copy;
  10         26189  
  10         699  
10 10     10   93 use File::Path qw(make_path);
  10         20  
  10         569  
11 10     10   656 use Data::Dumper;
  10         6355  
  10         494  
12 10     10   406 use App::WRT::Util;
  10         26  
  10         4799  
13              
14             =pod
15              
16             =head1 NAME
17              
18             App::WRT::FileIO - read and write directories and files
19              
20             =head1 SYNOPSIS
21              
22             use App::WRT::FileIO;
23             my $io = App::WRT::FileIO->new();
24              
25             =head1 METHODS
26              
27             =over
28              
29             =item new($class)
30              
31             Get a new FileIO object.
32              
33             =cut
34              
35             sub new {
36 3     3 1 116 my $class = shift;
37              
38 3         13 my %params = (
39             last_error => '',
40             );
41              
42 3         6 my $self = \%params;
43 3         71 bless $self, $class;
44             }
45              
46              
47             =item is_dir($path)
48              
49             =cut
50              
51             sub is_dir {
52 0     0 1 0 return -d $_[0];
53             }
54              
55              
56             =item is_regular_file($path)
57              
58             =cut
59              
60             sub is_regular_file {
61 0     0 1 0 return -f $_[0];
62             }
63              
64              
65             =item exists($path)
66              
67             =cut
68              
69             sub exists {
70 0     0 1 0 return -e $_[0];
71             }
72              
73              
74             =item dir_list($dir, $sort_order, $pattern)
75              
76             Return a $sort_order sorted list of files matching regex $pattern in a
77             directory.
78              
79             Calls $sort_order, which can be one of:
80              
81             alpha - alphabetical
82             reverse_alpha - alphabetical, reversed
83             high_to_low - numeric, high to low
84             low_to_high - numeric, low to high
85              
86             =cut
87              
88             sub dir_list {
89 1     1 1 8 my $self = shift;
90 1         5 return App::WRT::Util::dir_list(@_);
91             }
92              
93             # Various named sorts for dir_list:
94 0     0 0 0 sub alpha { $a cmp $b; } # alphabetical
95 0     0 0 0 sub high_to_low { $b <=> $a; } # numeric, high to low
96 0     0 0 0 sub low_to_high { $a <=> $b; } # numberic, low to high
97 0     0 0 0 sub reverse_alpha { $b cmp $a; } # alphabetical, reversed
98              
99              
100             =item file_put_contents($file, $contents)
101              
102             Write $contents string to $file path. Because:
103              
104             L
105              
106             =cut
107              
108             sub file_put_contents {
109 0     0 1 0 my $self = shift;
110 0         0 App::WRT::Util::file_put_contents(@_);
111             }
112              
113              
114             =item file_get_contents($file)
115              
116             Get contents string of $file path. Because:
117              
118             L
119              
120             =cut
121              
122             sub file_get_contents {
123 1     1 1 501 my $self = shift;
124 1         4 return App::WRT::Util::file_get_contents(@_);
125             }
126              
127              
128             =item file_copy($source, $dest)
129              
130             =cut
131              
132             sub file_copy {
133 0     0 1   my ($self, $source, $dest) = @_;
134 0           copy($source, $dest);
135             }
136              
137              
138             =item dir_make($source, $dest)
139              
140             =cut
141              
142             sub dir_make {
143 0     0 1   my ($self, $path) = @_;
144 0           my $path_err;
145 0           make_path($path, { error => \$path_err });
146 0 0         if (@{ $path_err }) {
  0            
147 0           $self->{last_error} = Dumper($path_err);
148 0           return 0;
149             }
150 0           return 1;
151             }
152              
153             =back
154              
155             =cut
156              
157             1;