blib/lib/Mail/LMLM/Render/HTML.pm | |||
---|---|---|---|
Criterion | Covered | Total | % |
statement | 12 | 139 | 8.6 |
branch | 0 | 24 | 0.0 |
condition | n/a | ||
subroutine | 4 | 20 | 20.0 |
pod | 14 | 14 | 100.0 |
total | 30 | 197 | 15.2 |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | package Mail::LMLM::Render::HTML; | ||||||
2 | $Mail::LMLM::Render::HTML::VERSION = '0.6805'; | ||||||
3 | 1 | 1 | 6 | use strict; | |||
1 | 2 | ||||||
1 | 25 | ||||||
4 | 1 | 1 | 4 | use warnings; | |||
1 | 1 | ||||||
1 | 22 | ||||||
5 | |||||||
6 | 1 | 1 | 3 | use vars qw(@ISA); | |||
1 | 2 | ||||||
1 | 40 | ||||||
7 | |||||||
8 | 1 | 1 | 354 | use Mail::LMLM::Render; | |||
1 | 4 | ||||||
1 | 1096 | ||||||
9 | |||||||
10 | @ISA=qw(Mail::LMLM::Render); | ||||||
11 | |||||||
12 | sub initialize | ||||||
13 | { | ||||||
14 | 0 | 0 | 1 | my $self = shift; | |||
15 | |||||||
16 | 0 | my $out_file = shift; | |||||
17 | |||||||
18 | 0 | $self->{'out'} = $out_file; | |||||
19 | |||||||
20 | 0 | return 0; | |||||
21 | } | ||||||
22 | |||||||
23 | sub _htmlize_onechar | ||||||
24 | { | ||||||
25 | 0 | 0 | my $c = shift; | ||||
26 | |||||||
27 | 0 | 0 | if ($c eq "<") | ||||
0 | |||||||
0 | |||||||
0 | |||||||
28 | { | ||||||
29 | 0 | return "\<"; | |||||
30 | } | ||||||
31 | elsif ($c eq ">") | ||||||
32 | { | ||||||
33 | 0 | return "\>"; | |||||
34 | } | ||||||
35 | elsif ($c eq '&') | ||||||
36 | { | ||||||
37 | 0 | return "\&" | |||||
38 | } | ||||||
39 | elsif ($c eq "\n") | ||||||
40 | { | ||||||
41 | 0 | return " "; |
|||||
42 | } | ||||||
43 | else | ||||||
44 | { | ||||||
45 | 0 | return $c; | |||||
46 | } | ||||||
47 | } | ||||||
48 | |||||||
49 | sub _htmlize | ||||||
50 | { | ||||||
51 | 0 | 0 | my $text = shift; | ||||
52 | |||||||
53 | 0 | $text =~ s/(<|>|\&|\n)/_htmlize_onechar($1)/ge; | |||||
0 | |||||||
54 | |||||||
55 | 0 | return $text; | |||||
56 | } | ||||||
57 | |||||||
58 | sub text | ||||||
59 | { | ||||||
60 | 0 | 0 | 1 | my $self = shift; | |||
61 | |||||||
62 | 0 | my $text = shift; | |||||
63 | |||||||
64 | 0 | my $style; | |||||
65 | |||||||
66 | 0 | 0 | if (scalar(@_)) | ||||
67 | { | ||||||
68 | 0 | $style = shift; | |||||
69 | } | ||||||
70 | else | ||||||
71 | { | ||||||
72 | 0 | $style = {}; | |||||
73 | } | ||||||
74 | |||||||
75 | 0 | my $out = _htmlize($text); | |||||
76 | |||||||
77 | 0 | 0 | if ($style->{'bold'}) | ||||
78 | { | ||||||
79 | 0 | $out = "".$out.""; | |||||
80 | } | ||||||
81 | 0 | 0 | if ($style->{'underline'}) | ||||
82 | { | ||||||
83 | 0 | $out = "".$out.""; | |||||
84 | } | ||||||
85 | 0 | 0 | if ($style->{'italic'}) | ||||
86 | { | ||||||
87 | 0 | $out = "".$out.""; | |||||
88 | } | ||||||
89 | |||||||
90 | 0 | print {*{$self->{'out'}}} $out; | |||||
0 | |||||||
0 | |||||||
91 | |||||||
92 | 0 | return 0; | |||||
93 | } | ||||||
94 | |||||||
95 | sub newline | ||||||
96 | { | ||||||
97 | 0 | 0 | 1 | my $self = shift; | |||
98 | |||||||
99 | 0 | print {*{$self->{'out'}}} " \n" ; |
|||||
0 | |||||||
0 | |||||||
100 | } | ||||||
101 | |||||||
102 | sub indent_inc | ||||||
103 | { | ||||||
104 | 0 | 0 | 1 | my $self = shift; | |||
105 | |||||||
106 | 0 | print {*{$self->{'out'}}} "\n \n"; |
|||||
0 | |||||||
0 | |||||||
107 | |||||||
108 | 0 | return 0; | |||||
109 | } | ||||||
110 | |||||||
111 | sub indent_dec | ||||||
112 | { | ||||||
113 | 0 | 0 | 1 | my $self = shift; | |||
114 | |||||||
115 | 0 | print {*{$self->{'out'}}} "\n\n" ; | |||||
0 | |||||||
0 | |||||||
116 | |||||||
117 | 0 | return 0; | |||||
118 | } | ||||||
119 | |||||||
120 | sub start_link | ||||||
121 | { | ||||||
122 | 0 | 0 | 1 | my $self = shift; | |||
123 | |||||||
124 | 0 | my $url = shift; | |||||
125 | |||||||
126 | 0 | print {*{$self->{'out'}}} ""; | |||||
0 | |||||||
0 | |||||||
127 | |||||||
128 | 0 | return 0; | |||||
129 | } | ||||||
130 | |||||||
131 | sub end_link | ||||||
132 | { | ||||||
133 | 0 | 0 | 1 | my $self = shift; | |||
134 | |||||||
135 | 0 | print {*{$self->{'out'}}} ""; | |||||
0 | |||||||
0 | |||||||
136 | |||||||
137 | 0 | return 0; | |||||
138 | } | ||||||
139 | |||||||
140 | sub start_section | ||||||
141 | { | ||||||
142 | 0 | 0 | 1 | my $self = shift; | |||
143 | |||||||
144 | 0 | my $title = shift; | |||||
145 | |||||||
146 | 0 | my $options; | |||||
147 | |||||||
148 | 0 | 0 | if (scalar(@_)) | ||||
149 | { | ||||||
150 | 0 | $options = shift; | |||||
151 | } | ||||||
152 | else | ||||||
153 | { | ||||||
154 | 0 | $options = {}; | |||||
155 | } | ||||||
156 | |||||||
157 | 0 | my $o = $self->{'out'}; | |||||
158 | |||||||
159 | 0 | my $id_attr = ""; | |||||
160 | 0 | 0 | if (exists($options->{'id'})) | ||||
161 | { | ||||||
162 | 0 | $id_attr = " id=\"" . $options->{'id'} . "\""; | |||||
163 | } | ||||||
164 | |||||||
165 | 0 | print {*{$o}} ""; |
|||||
0 | |||||||
0 | |||||||
166 | 0 | 0 | if (exists($options->{'title_url'})) | ||||
167 | { | ||||||
168 | 0 | print {*{$o}} "{'title_url'} . "\">" ; | |||||
0 | |||||||
0 | |||||||
169 | } | ||||||
170 | 0 | $self->text($title); | |||||
171 | 0 | 0 | if (exists($options->{'title_url'})) | ||||
172 | { | ||||||
173 | 0 | print {*{$o}} ""; | |||||
0 | |||||||
0 | |||||||
174 | } | ||||||
175 | 0 | print {*{$o}} "" ; | |||||
0 | |||||||
0 | |||||||
176 | 0 | print {*{$o}} "\n\n"; | |||||
0 | |||||||
0 | |||||||
177 | |||||||
178 | |||||||
179 | 0 | return 0; | |||||
180 | } | ||||||
181 | |||||||
182 | sub start_para | ||||||
183 | { | ||||||
184 | 0 | 0 | 1 | my $self = shift; | |||
185 | |||||||
186 | 0 | print {*{$self->{'out'}}}(" \n"); |
|||||
0 | |||||||
0 | |||||||
187 | |||||||
188 | 0 | return 0; | |||||
189 | } | ||||||
190 | |||||||
191 | sub end_para | ||||||
192 | { | ||||||
193 | 0 | 0 | 1 | my $self = shift; | |||
194 | |||||||
195 | 0 | print {*{$self->{'out'}}}("\n\n"); | |||||
0 | |||||||
0 | |||||||
196 | |||||||
197 | 0 | return 0; | |||||
198 | } | ||||||
199 | |||||||
200 | sub end_section | ||||||
201 | { | ||||||
202 | 0 | 0 | 1 | my $self = shift; | |||
203 | |||||||
204 | 0 | print {*{$self->{'out'}}}("\n\n"); | |||||
0 | |||||||
0 | |||||||
205 | |||||||
206 | 0 | return 0; | |||||
207 | } | ||||||
208 | |||||||
209 | sub start_document | ||||||
210 | { | ||||||
211 | 0 | 0 | 1 | my $self = shift; | |||
212 | |||||||
213 | 0 | my $head_title = shift; | |||||
214 | |||||||
215 | 0 | my $body_title = shift; | |||||
216 | |||||||
217 | 0 | $head_title = _htmlize($head_title); | |||||
218 | |||||||
219 | 0 | my $o = $self->{'out'}; | |||||
220 | |||||||
221 | 0 | print {*{$o}} <<"EOF" ; | |||||
0 | |||||||
0 | |||||||
222 | |||||||
223 | |||||||
224 | PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||||||
225 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||||||
226 | |||||||
227 | |||||||
228 | |
||||||
229 | |||||||
230 | |||||||
231 | |||||||
232 | |||||||
233 | EOF | ||||||
234 | |||||||
235 | |||||||
236 | 0 | print {*{$o}}(""); |
|||||
0 | |||||||
0 | |||||||
237 | |||||||
238 | 0 | $self->text($body_title); | |||||
239 | |||||||
240 | 0 | print {*{$o}}("\n\n"); | |||||
0 | |||||||
0 | |||||||
241 | |||||||
242 | 0 | return 0; | |||||
243 | } | ||||||
244 | |||||||
245 | sub end_document | ||||||
246 | { | ||||||
247 | 0 | 0 | 1 | my $self = shift; | |||
248 | |||||||
249 | 0 | print {*{$self->{'out'}}}( | |||||
0 | |||||||
0 | |||||||
250 | "\n" . | ||||||
251 | "\n" . | ||||||
252 | "\n" | ||||||
253 | ); | ||||||
254 | |||||||
255 | 0 | return 0; | |||||
256 | } | ||||||
257 | |||||||
258 | sub horizontal_line | ||||||
259 | { | ||||||
260 | 0 | 0 | 1 | my $self = shift; | |||
261 | |||||||
262 | 0 | print {*{$self->{'out'}}}("\n\n \n\n"); |
|||||
0 | |||||||
0 | |||||||
263 | |||||||
264 | 0 | return 0; | |||||
265 | } | ||||||
266 | |||||||
267 | 1; | ||||||
268 | |||||||
269 | __END__ |