File Coverage

blib/lib/Toader/Page/Helper.pm
Criterion Covered Total %
statement 18 125 14.4
branch 0 46 0.0
condition n/a
subroutine 6 12 50.0
pod 6 6 100.0
total 30 189 15.8


line stmt bran cond sub pod time code
1             package Toader::Page::Helper;
2              
3 5     5   21100 use warnings;
  5         11  
  5         174  
4 5     5   27 use strict;
  5         82  
  5         114  
5 5     5   529 use Toader::isaToaderDir;
  5         8  
  5         125  
6 5     5   26 use base 'Error::Helper';
  5         9  
  5         485  
7 5     5   1025 use Toader::pathHelper;
  5         9  
  5         184  
8 5     5   2283 use Toader::Page::Manage;
  5         14  
  5         5147  
9              
10             =head1 NAME
11              
12             Toader::Page::Helper - Misc helper methods for pages.
13              
14             =head1 VERSION
15              
16             Version 1.0.0
17              
18             =cut
19              
20             our $VERSION = '1.0.0';
21              
22             =head1 METHODS
23              
24             =head2 new
25              
26             This initializes this object.
27              
28             This method will not error.
29              
30             my $foo = Toader::Page::FileHelper->new();
31              
32             =cut
33              
34             sub new{
35 0     0 1   my $toader=$_[1];
36              
37 0           my $self={
38             error=>undef,
39             errorString=>'',
40             perror=>undef,
41             directory=>undef,
42             errorExtra=>{
43             flags=>{
44             1=>'notAtoaderDir',
45             2=>'noDirSpecified',
46             3=>'noPageSpecified',
47             4=>'noDirSet',
48             5=>'invalidPageName',
49             6=>'pageManageErrored',
50             7=>'noToaderObj',
51             8=>'notAtoaderObj',
52             },
53             },
54             };
55 0           bless $self;
56              
57             #if we have a Toader object, reel it in
58 0 0         if ( ! defined( $toader ) ){
59 0           $self->{perror}=1;
60 0           $self->{error}=7;
61 0           $self->{errorString}='No Toader object specified';
62 0           $self->warn;
63 0           return $self;
64             }
65 0 0         if ( ref( $toader ) ne "Toader" ){
66 0           $self->{perror}=1;
67 0           $self->{error}=8;
68 0           $self->{errorString}='The object specified is a "'.ref($toader).'"';
69 0           $self->warn;
70 0           return $self;
71             }
72 0           $self->{toader}=$toader;
73              
74 0           return $self;
75             }
76              
77             =head2 pageDirectory
78              
79             This returns the page directory.
80              
81             This requires setDir to be called previously.
82              
83             If setDir has been successfully called, this will not error.
84              
85             my $pageDirectory=$foo->pageDirectory;
86             if($foo->error){
87             warn('error: '.$foo->error.":".$foo->errorString);
88             }
89              
90             =cut
91              
92             sub pageDirectory{
93 0     0 1   my $self=$_[0];
94              
95             #blank any previous errors
96 0 0         if (!$self->errorblank) {
97 0           return undef;
98             }
99              
100             #make sure setDir has been called with out issue
101 0 0         if (!defined($self->{directory})) {
102 0           $self->{error}=4;
103 0           $self->{errorString}='No directory has been set yet';
104 0           $self->warn;
105 0           return undef;
106             }
107            
108 0           return $self->{directory}.'/.toader/pages/';
109             }
110              
111             =head2 pageExists
112              
113             This checks if the specified page exists.
114              
115             One argument is accepted and it is the page in question.
116              
117             This requires setDir to be called previously.
118              
119             my $retruned=$foo->pageExists($page);
120             if($foo->error){
121             warn('error: '.$foo->error.":".$foo->errorString);
122             }
123             if($returned){
124             print "It exists.\n";
125             }
126              
127             =cut
128              
129             sub pageExists{
130 0     0 1   my $self=$_[0];
131 0           my $page=$_[1];
132              
133             #blank any previous errors
134 0 0         if (!$self->errorblank) {
135 0           return undef;
136             }
137              
138             #make sure setDir has been called with out issue
139 0 0         if (!defined($self->{directory})) {
140 0           $self->{error}=4;
141 0           $self->{errorString}='No directory has been set yet';
142 0           $self->warn;
143 0           return undef;
144             }
145              
146             #make sure a page is specified.
147 0 0         if (!defined($page)) {
148 0           $self->{error}=0;
149 0           $self->{errorString}='No page specified';
150 0           $self->warn;
151 0           return undef;
152             }
153              
154             #make sure we have a valid page name.
155 0           my $returned=$self->validPageName($page);
156 0 0         if (!$returned) {
157 0           $self->{error}=5;
158 0           $self->{errorString}='The page name is not valid';
159 0           $self->warn;
160 0           return undef;
161             }
162            
163             #check if it exists
164 0 0         if (-f $self->{directory}.'/.toader/pages/'.$page ) {
165 0           return 1;
166             }
167              
168 0           return 0;
169             }
170              
171             =head2 setDir
172              
173             This sets the directory to operate on.
174              
175             One argument is required. It is the directory to use.
176              
177             $foo->setDir($directory);
178             if($foo->error){
179             warn('error: '.$foo->error.":".$foo->errorString);
180             }
181              
182             =cut
183              
184             sub setDir{
185 0     0 1   my $self=$_[0];
186 0           my $directory=$_[1];
187              
188             #blank any previous errors
189 0 0         if (!$self->errorblank) {
190 0           return undef;
191             }
192              
193             #error if no directory is specified
194 0 0         if (!defined( $directory )) {
195 0           $self->{error}=2;
196 0           $self->{errorString}='No directory specified';
197 0           $self->warn;
198 0           return undef;
199             }
200              
201             #cleans up the naming
202 0           my $pathHelper=Toader::pathHelper->new( $directory );
203 0           $directory=$pathHelper->cleanup( $directory );
204              
205              
206             #make sure it is a Toader directory
207 0           my $tdc=Toader::isaToaderDir->new;
208 0           my $isaToaderDir=$tdc->isaToaderDir($directory);
209 0 0         if ( ! $isaToaderDir ) {
210 0           $self->{error}=1;
211 0           $self->{errorString}='Not a Toader directory according to Toader::isaToaderDir->isaToaderDir ';
212 0           $self->warn;
213 0           return undef;
214             }
215              
216             #save the directory
217 0           $self->{directory}=$directory;
218              
219 0           return 1;
220             }
221              
222             =head2 summary
223              
224             This builds a summary of of the the pages.
225              
226              
227              
228             =cut
229              
230             sub summary{
231 0     0 1   my $self=$_[0];
232              
233             #blank any previous errors
234 0 0         if (!$self->errorblank) {
235 0           return undef;
236             }
237              
238             #make sure setDir has been called with out issue
239 0 0         if (!defined($self->{directory})) {
240 0           $self->{error}=4;
241 0           $self->{errorString}='No directory has been set yet';
242 0           $self->warn;
243 0           return undef;
244             }
245            
246             #initalize Toader::Entry::Manage
247 0           my $pmanage=Toader::Page::Manage->new;
248 0           $pmanage->setDir( $self->{directory} );
249 0 0         if ( $pmanage->error ){
250 0           $self->{error}=6;
251 0           $self->{errorString}='Failed to initialize Toader::Page::Manage. '.
252             'error="'.$pmanage->error.'" errorString="'.$pmanage->errorString.'"';
253 0           $self->warn;
254 0           return undef;
255             }
256            
257 0           my @pages=$pmanage->list;
258 0           my $int=0;
259 0           while ( defined[$int] ){
260            
261              
262 0           $int++;
263             }
264              
265             }
266              
267             =head2 validPageName
268              
269             This verifies that the name is a valid file name.
270              
271             One arguemnet is taken and that is the name of the page
272             name to check.
273              
274             This will not error. If the name is not defined, false, '0', will
275             be returned as undefined is not a valid name.
276              
277             my $valid=$foo->validPageName($name);
278             if($valid){
279             print '"'.$name.'" is a valid name.';
280             }
281              
282             =cut
283              
284             sub validPageName{
285 0     0 1   my $self=$_[0];
286 0           my $name=$_[1];
287              
288             #blank any previous errors
289 0 0         if (!$self->errorblank) {
290 0           return undef;
291             }
292              
293 0 0         if (!defined($name)) {
294 0           return undef;
295             }
296              
297             #checks for invalid characters
298 0 0         if ($name =~ /\n/) {
299 0           return 0;
300             }
301 0 0         if ($name =~ /\t/) {
302 0           return 0;
303             }
304 0 0         if ($name =~ /\//) {
305 0           return 0;
306             }
307 0 0         if ($name =~ /^ /) {
308 0           return 0;
309             }
310 0 0         if ($name =~ / $/) {
311 0           return 0;
312             }
313 0 0         if ($name =~ /^\./) {
314 0           return 0;
315             }
316            
317 0           return 1;
318             }
319              
320             =head1 ERROR CODES
321              
322             =head2 1, notAtoaderDir
323              
324             Not a L directory.
325              
326             =head2 2, noDirSpecified
327              
328             No directory specified.
329              
330             =head2 3, noPageSpecified
331              
332             No page specified.
333              
334             =head2 4, noDirSet
335              
336             No directory has been set yet.
337              
338             =head2 5, invalidPageName
339              
340             The page name is not valid.
341              
342             =head2 6, pageManageErrored
343              
344             Failed to initialize L.
345              
346             =head2 7, noToaderObj
347              
348             No L object specified.
349              
350             =head2 8, notAtoaderObj
351              
352             The object specified is not a L object.
353              
354              
355             =head1 AUTHOR
356              
357             Zane C. Bowers, C<< >>
358              
359             =head1 BUGS
360              
361             Please report any bugs or feature requests to C, or through
362             the web interface at L. I will be notified, and then you'll
363             automatically be notified of progress on your bug as I make changes.
364              
365              
366              
367              
368             =head1 SUPPORT
369              
370             You can find documentation for this module with the perldoc command.
371              
372             perldoc Toader::Page::Helper
373              
374              
375             You can also look for information at:
376              
377             =over 4
378              
379             =item * RT: CPAN's request tracker
380              
381             L
382              
383             =item * AnnoCPAN: Annotated CPAN documentation
384              
385             L
386              
387             =item * CPAN Ratings
388              
389             L
390              
391             =item * Search CPAN
392              
393             L
394              
395             =back
396              
397              
398             =head1 ACKNOWLEDGEMENTS
399              
400              
401             =head1 LICENSE AND COPYRIGHT
402              
403             Copyright 2011 Zane C. Bowers-Hadley.
404              
405             This program is free software; you can redistribute it and/or modify it
406             under the terms of either: the GNU General Public License as published
407             by the Free Software Foundation; or the Artistic License.
408              
409             See http://dev.perl.org/licenses/ for more information.
410              
411              
412             =cut
413              
414             1; # End of Toader::Page::Helper