| 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__ |