File Coverage

blib/lib/Tags/HTML.pm
Criterion Covered Total %
statement 62 80 77.5
branch 10 16 62.5
condition 15 15 100.0
subroutine 16 20 80.0
pod 9 9 100.0
total 112 140 80.0


line stmt bran cond sub pod time code
1             package Tags::HTML;
2              
3 8     8   258821 use strict;
  8         16  
  8         312  
4 8     8   63 use warnings;
  8         16  
  8         432  
5              
6 8     8   3060 use Class::Utils qw(set_params);
  8         75128  
  8         227  
7 8     8   555 use Error::Pure qw(err);
  8         23  
  8         479  
8 8     8   49 use Scalar::Util qw(blessed);
  8         13  
  8         9631  
9              
10             our $VERSION = 0.10;
11              
12             # Constructor.
13             sub new {
14 16     16 1 2020255 my ($class, @params) = @_;
15              
16             # Create object.
17 16         43 my $self = bless {}, $class;
18              
19             # 'CSS::Struct::Output' object.
20 16         59 $self->{'css'} = undef;
21              
22             # No CSS support.
23 16         36 $self->{'no_css'} = 0;
24              
25             # 'Tags::Output' object.
26 16         37 $self->{'tags'} = undef;
27              
28             # Process params.
29 16         120 set_params($self, @params);
30              
31             # Check to 'CSS::Struct::Output' object.
32 16 100 100     289 if (! $self->{'no_css'} && defined $self->{'css'}
      100        
      100        
33             && (! blessed($self->{'css'}) || ! $self->{'css'}->isa('CSS::Struct::Output'))) {
34              
35 3         39 err "Parameter 'css' must be a 'CSS::Struct::Output::*' class.";
36             }
37              
38             # Check to 'Tags' object.
39 13 100 100     68 if (defined $self->{'tags'}
      100        
40             && (! blessed($self->{'tags'}) || ! $self->{'tags'}->isa('Tags::Output'))) {
41              
42 3         55 err "Parameter 'tags' must be a 'Tags::Output::*' class.";
43             }
44              
45 10         24 $self->{'css_src'} = [];
46 10         22 $self->{'script_js'} = [];
47 10         23 $self->{'script_js_src'} = [];
48              
49             # Object.
50 10         59 return $self;
51             }
52              
53             # Cleanup after dynamic part.
54             sub cleanup {
55 1     1 1 6 my ($self, @params) = @_;
56              
57 1         5 $self->_cleanup(@params);
58              
59 1         2 $self->{'css_src'} = [];
60 1         4 $self->{'script_js'} = [];
61 1         2 $self->{'script_js_src'} = [];
62              
63 1         4 return;
64             }
65              
66             # CSS link handling.
67             sub css_src {
68 0     0 1 0 my ($self, $css_link_ar) = @_;
69              
70 0 0       0 if (defined $css_link_ar) {
71 0         0 $self->{'css_src'} = $css_link_ar;
72             }
73              
74 0         0 return $self->{'css_src'};
75             }
76              
77             # Initialize in dynamic part.
78             sub init {
79 1     1 1 7 my ($self, @params) = @_;
80              
81 1         4 $self->_init(@params);
82              
83 1         3 return;
84             }
85              
86             # Initialize in preparation phase.
87             sub prepare {
88 1     1 1 10 my ($self, @params) = @_;
89              
90 1         5 $self->_prepare(@params);
91              
92 1         2 return;
93             }
94              
95             # Process 'Tags'.
96             sub process {
97 3     3 1 14 my ($self, @params) = @_;
98              
99 3 100       5 if (! defined $self->{'tags'}) {
100 1         5 err "Parameter 'tags' isn't defined.";
101             }
102              
103 2         5 $self->_process(@params);
104              
105 1         90 return;
106             }
107              
108             # Process 'CSS::Struct'.
109             sub process_css {
110 3     3 1 18 my ($self, @params) = @_;
111              
112             # No CSS support.
113 3 100       9 if ($self->{'no_css'}) {
114 1         4 return;
115             }
116              
117 2 100       6 if (! defined $self->{'css'}) {
118 1         6 err "Parameter 'css' isn't defined.";
119             }
120              
121 1         5 $self->_process_css(@params);
122              
123 0         0 return;
124             }
125              
126             # Javascript handling.
127             sub script_js {
128 0     0 1 0 my ($self, $js_code_ar) = @_;
129              
130 0 0       0 if (defined $js_code_ar) {
131 0         0 $self->{'script_js'} = $js_code_ar;
132             }
133              
134 0         0 return $self->{'script_js'};
135             }
136              
137             # Javascript script handling.
138             sub script_js_src {
139 0     0 1 0 my ($self, $js_link_ar) = @_;
140              
141 0 0       0 if (defined $js_link_ar) {
142 0         0 $self->{'script_js_src'} = $js_link_ar;
143             }
144              
145 0         0 return $self->{'script_js_src'};
146             }
147              
148             sub _cleanup {
149 1     1   3 my ($self, @params) = @_;
150              
151             # Default is no special code.
152              
153 1         3 return;
154             }
155              
156             sub _init {
157 1     1   3 my ($self, @params) = @_;
158              
159             # Default is no special code.
160              
161 1         2 return;
162             }
163              
164             sub _prepare {
165 1     1   2 my ($self, @params) = @_;
166              
167             # Default is no special code.
168              
169 1         3 return;
170             }
171              
172             sub _process {
173 1     1   2 my ($self, @params) = @_;
174              
175 1         3 err "Need to be implemented in inherited class in _process() method.";
176              
177 0         0 return;
178             }
179              
180             sub _process_css {
181 1     1   4 my ($self, @params) = @_;
182              
183 1         4 err "Need to be implemented in inherited class in _process_css() method.";
184              
185 0           return;
186             }
187              
188             sub _process_js {
189 0     0     my ($self, @params) = @_;
190              
191 0           err "Need to be implemented in inherited class in _process_js() method.";
192              
193 0           return;
194             }
195              
196             1;
197              
198             __END__