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.6806'; | ||||||
3 | 1 | 1 | 5 | use strict; | |||
1 | 2 | ||||||
1 | 23 | ||||||
4 | 1 | 1 | 4 | use warnings; | |||
1 | 2 | ||||||
1 | 20 | ||||||
5 | |||||||
6 | 1 | 1 | 4 | use vars qw(@ISA); | |||
1 | 2 | ||||||
1 | 28 | ||||||
7 | |||||||
8 | 1 | 1 | 337 | use Mail::LMLM::Render; | |||
1 | 2 | ||||||
1 | 917 | ||||||
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 | 0 | return 0; | |||||
179 | } | ||||||
180 | |||||||
181 | sub start_para | ||||||
182 | { | ||||||
183 | 0 | 0 | 1 | my $self = shift; | |||
184 | |||||||
185 | 0 | print { *{ $self->{'out'} } } (" \n"); |
|||||
0 | |||||||
0 | |||||||
186 | |||||||
187 | 0 | return 0; | |||||
188 | } | ||||||
189 | |||||||
190 | sub end_para | ||||||
191 | { | ||||||
192 | 0 | 0 | 1 | my $self = shift; | |||
193 | |||||||
194 | 0 | print { *{ $self->{'out'} } } ("\n\n"); | |||||
0 | |||||||
0 | |||||||
195 | |||||||
196 | 0 | return 0; | |||||
197 | } | ||||||
198 | |||||||
199 | sub end_section | ||||||
200 | { | ||||||
201 | 0 | 0 | 1 | my $self = shift; | |||
202 | |||||||
203 | 0 | print { *{ $self->{'out'} } } ("\n\n"); | |||||
0 | |||||||
0 | |||||||
204 | |||||||
205 | 0 | return 0; | |||||
206 | } | ||||||
207 | |||||||
208 | sub start_document | ||||||
209 | { | ||||||
210 | 0 | 0 | 1 | my $self = shift; | |||
211 | |||||||
212 | 0 | my $head_title = shift; | |||||
213 | |||||||
214 | 0 | my $body_title = shift; | |||||
215 | |||||||
216 | 0 | $head_title = _htmlize($head_title); | |||||
217 | |||||||
218 | 0 | my $o = $self->{'out'}; | |||||
219 | |||||||
220 | 0 | print { *{$o} } <<"EOF" ; | |||||
0 | |||||||
0 | |||||||
221 | |||||||
222 | |||||||
223 | PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||||||
224 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||||||
225 | |||||||
226 | |||||||
227 | |
||||||
228 | |||||||
229 | |||||||
230 | |||||||
231 | |||||||
232 | EOF | ||||||
233 | |||||||
234 | 0 | print { *{$o} } (""); |
|||||
0 | |||||||
0 | |||||||
235 | |||||||
236 | 0 | $self->text($body_title); | |||||
237 | |||||||
238 | 0 | print { *{$o} } ("\n\n"); | |||||
0 | |||||||
0 | |||||||
239 | |||||||
240 | 0 | return 0; | |||||
241 | } | ||||||
242 | |||||||
243 | sub end_document | ||||||
244 | { | ||||||
245 | 0 | 0 | 1 | my $self = shift; | |||
246 | |||||||
247 | 0 | print { *{ $self->{'out'} } } ( "\n" . "\n" . "\n" ); | |||||
0 | |||||||
0 | |||||||
248 | |||||||
249 | 0 | return 0; | |||||
250 | } | ||||||
251 | |||||||
252 | sub horizontal_line | ||||||
253 | { | ||||||
254 | 0 | 0 | 1 | my $self = shift; | |||
255 | |||||||
256 | 0 | print { *{ $self->{'out'} } } ("\n\n \n\n"); |
|||||
0 | |||||||
0 | |||||||
257 | |||||||
258 | 0 | return 0; | |||||
259 | } | ||||||
260 | |||||||
261 | 1; | ||||||
262 | |||||||
263 | __END__ |