File Coverage

blib/lib/App/Pods2Site/SiteBuilder/AbstractBasicFrames.pm
Criterion Covered Total %
statement 106 110 96.3
branch 9 16 56.2
condition 3 4 75.0
subroutine 11 13 84.6
pod 0 1 0.0
total 129 144 89.5


line stmt bran cond sub pod time code
1             package App::Pods2Site::SiteBuilder::AbstractBasicFrames;
2              
3 2     2   13 use strict;
  2         3  
  2         48  
4 2     2   8 use warnings;
  2         3  
  2         97  
5              
6             our $VERSION = '1.003';
7             my $version = $VERSION;
8             $VERSION = eval $VERSION;
9              
10 2     2   19 use base qw(App::Pods2Site::AbstractSiteBuilder);
  2         4  
  2         238  
11              
12 2     2   12 use App::Pods2Site::Util qw(slashify readData writeData writeUTF8File);
  2         3  
  2         113  
13              
14 2     2   859 use HTML::Entities;
  2         10925  
  2         2229  
15              
16             sub _getCssContent
17             {
18 3     3   21 return <
19             \@charset "UTF-8";
20              
21             html
22             {
23             font-family: sans-serif;
24             font-size: small;
25             }
26              
27             MYCSS
28             }
29              
30             sub makeSite
31             {
32 3     3 0 15 my $self = shift;
33 3         10 my $args = shift;
34 3         11 my $workGroups = shift;
35 3         90 my $partCounts = shift;
36 3         15 my $mainpage = shift;
37              
38 3         27 $self->__updateHeader($args, $mainpage);
39 3         41 $self->__updateAbout($args, $partCounts);
40 3         17 $self->__updateTOC($args, $workGroups);
41 3         16 $self->__updateIndex($args, $mainpage);
42             }
43              
44             # PRIVATE
45             #
46              
47             sub __updateHeader
48             {
49 3     3   12 my $self = shift;
50 3         6 my $args = shift;
51 3         12 my $mainpage = shift;
52              
53 3         29 my $title = encode_entities($args->getTitle());
54 3         78 my $sysCssName = $self->getSystemCssName();
55              
56 3         14 my ($mainspan, $aboutspan);
57 3 50       12 if ($mainpage eq ':std')
58             {
59 3         23 $mainspan = qq($title);
60 3         19 $aboutspan = '';
61             }
62             else
63             {
64 0         0 $mainspan = qq($title);
65 0         0 $aboutspan = qq(about);
66             }
67              
68 3         21 my $headerContent = <
69            
70            
71              
72            
73             Pods2Site header
74            
75            
76            
77              
78            
79             $mainspan
80             $aboutspan
81            
82              
83            
84             HDR
85              
86 3         12 my $sitedir = $args->getSiteDir();
87 3         21 my $headerFile = slashify("$sitedir/header.html");
88 3         22 writeUTF8File($headerFile, $headerContent);
89              
90 3 50       17 print "Wrote header as '$headerFile'\n" if $args->isVerboseLevel(2);
91             }
92              
93             sub __updateAbout
94             {
95 3     3   8 my $self = shift;
96 3         6 my $args = shift;
97 3         6 my $partCounts = shift;
98              
99 3         14 my $scannedLocations = '';
100 3         44 foreach my $loc ($args->getBinDirs(), $args->getLibDirs())
101             {
102 6         21 $loc = encode_entities($loc);
103 6         81 $scannedLocations .= " $loc
"
104             }
105 3         9 $scannedLocations = "

\n\t\t\tScanned locations:
$scannedLocations\n\t\t

\n";
106              
107 3         14 my $style = "

\n\t\t\tStyle:
";

108 3         18 $style .= " " . encode_entities($self->getStyleName()) . "
";
109 3         42 $style .= "\n\t\t

\n";
110            
111 3   50     30 my $actualCSS = encode_entities($args->getCSS() || '(default)');
112 3         43 $actualCSS = "

\n\t\t\tCSS:
 $actualCSS
\n\t\t

\n";
113            
114 3         8 my $groupDefs = '';
115 3         5 foreach my $groupDef (@{$args->getGroupDefs()})
  3         19  
116             {
117 6 100       25 $groupDefs .= "\n\t\t\t
" if $groupDefs;
118 6         31 my $name = encode_entities($groupDef->{name});
119 6         90 $groupDefs .= " $name ($partCounts->{$groupDef->{name}} pods)
";
120 6         49 my $query = encode_entities($groupDef->{query}->getQuery());
121 6 50       123 if ($query =~ s#\n#
#g)
122             {
123 0         0 $query =~ s#\t# #g;
124             }
125 6         26 $groupDefs .= "  $query
";
126             }
127 3         16 $groupDefs = "

\n\t\t\tGroups:\n\t\t\t
$groupDefs\n\t\t

\n";
128            
129 3         13 my $sitedir = $args->getSiteDir();
130 3   100     26 my $savedTS = readData($sitedir, 'timestamps') || [];
131 3         10 push(@$savedTS, time());
132 3         22 writeData($sitedir, 'timestamps', $savedTS);
133            
134 3         14 my $z = encode_entities(slashify($0));
135 3         55 my $zv = encode_entities($App::Pods2Site::VERSION);
136 3         54 my $x = encode_entities($^X);
137 3         35 my $xv = encode_entities($]);
138 3         45 my $builtBy = "

\n\t\t\tThis site built using:
";

139 3         17 $builtBy .= " $z ($zv)
";
140 3         12 $builtBy .= " $x ($xv)
\n";
141 3         7 $builtBy .= "\t\t

\n";
142              
143 3         6 my $createdUpdated = '';
144 3         166 $createdUpdated .= (' ' . encode_entities(scalar(localtime($_))) . "
") foreach (@$savedTS);
145 3         75 $createdUpdated = "

\n\t\t\tCreated/Updated:
$createdUpdated\n\t\t

\n";
146            
147 3         10 my $sysCssName = $self->getSystemCssName();
148            
149 3         32 my $aboutContent = <
150            
151            
152              
153            
154             Pods2Site main
155            
156            
157            
158            
159            
160             $scannedLocations
161             $style
162             $actualCSS
163             $groupDefs
164             $createdUpdated
165             $builtBy
166            
167            
168            
169             ABOUT
170              
171 3         19 my $aboutFile = slashify("$sitedir/about.html");
172 3         11 writeUTF8File($aboutFile, $aboutContent);
173            
174 3 50       33 print "Wrote about as '$aboutFile'\n" if $args->isVerboseLevel(2);
175             }
176              
177             sub __updateTOC
178             {
179 3     3   5 my $self = shift;
180 3         12 my $args = shift;
181 3         5 my $workGroups = shift;
182              
183 3         10 my $sitedir = $args->getSiteDir();
184              
185 3         13 my $sections = '';
186 3         15 foreach my $workGroup (@$workGroups)
187             {
188 6         48 $sections .= $self->_getCategoryTOC($workGroup->{group}, $workGroup->{podinfo}, $sitedir);
189             }
190            
191 3         16 $self->_rewriteCss($args);
192            
193 3         19 my $sysCssName = $self->getSystemCssName();
194              
195 3         25 my $tocContent = <
196            
197            
198              
199            
200             Pods2Site toc
201            
202            
203            
204            
205            
206             $sections
207            
208            
209            
210             TOC
211              
212 3         15 my $tocFile = slashify("$sitedir/toc.html");
213 3         10 writeUTF8File($tocFile, $tocContent);
214            
215 3 50       18 print "Wrote TOC as '$tocFile'\n" if $args->isVerboseLevel(2);
216             }
217              
218             sub __updateIndex
219             {
220 3     3   7 my $self = shift;
221 3         6 my $args = shift;
222 3         5 my $mainpage = shift;
223              
224 3 50       10 $mainpage = 'about.html' if $mainpage eq ':std';
225              
226 3         10 my $sysCssName = $self->getSystemCssName();
227 3         9 my $title = encode_entities($args->getTitle());
228            
229 3         46 my $indexContent = <
230            
231            
232              
233            
234             $title
235            
236            
237            
238            
239            
240            
241            
242            
243            
244            
245            
246              
247            
248             INDEX
249              
250 3         10 my $sitedir = $args->getSiteDir();
251 3         12 my $indexFile = slashify("$sitedir/index.html");
252 3         13 writeUTF8File($indexFile, $indexContent);
253            
254 3 50       16 print "Wrote index as '$indexFile'\n" if $args->isVerboseLevel(2);
255             }
256              
257             sub _getCategoryTOC
258             {
259 0     0     die("Missing override: _getCategoryTOC()");
260             }
261              
262             sub _rewriteCss
263       0     {
264             # noop
265             }
266              
267             1;