File Coverage

blib/lib/Mail/Salsa/Template.pm
Criterion Covered Total %
statement 12 54 22.2
branch 0 8 0.0
condition 0 3 0.0
subroutine 4 9 44.4
pod 0 5 0.0
total 16 79 20.2


line stmt bran cond sub pod time code
1             #
2             # Mail/Salsa/Template.pm
3             # Last Modification: Sat Oct 29 20:23:23 WEST 2005
4             #
5             # Copyright (c) 2005 Henrique Dias . All rights reserved.
6             # This module is free software; you can redistribute it and/or modify
7             # it under the same terms as Perl itself.
8             #
9             package Mail::Salsa::Template;
10              
11 11     11   24179 use 5.008000;
  11         39  
  11         479  
12 11     11   60 use strict;
  11         23  
  11         581  
13 11     11   65 use warnings;
  11         22  
  11         10626  
14              
15             require Exporter;
16 11     11   1583 use AutoLoader qw(AUTOLOAD);
  11         1365  
  11         100  
17              
18             our @ISA = qw(Exporter);
19              
20             # Items to export into callers namespace by default. Note: do not export
21             # names by default without a very good reason. Use EXPORT_OK instead.
22             # Do not simply export all your public functions/methods/constants.
23              
24             # This allows declaration use Mail::Salsa::Template ':all';
25             # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
26             # will save memory.
27              
28             our %EXPORT_TAGS = ( 'all' => [ qw() ] );
29             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
30             our @EXPORT = qw();
31              
32             our $VERSION = '0.02';
33              
34             # Preloaded methods go here.
35              
36             # Autoload methods go after =cut, and are processed by the autosplit program.
37              
38             sub new {
39 0     0 0   my $proto = shift;
40 0   0       my $class = ref($proto) || $proto;
41 0           my $self = {
42             'lang' => "en",
43             'label' => "",
44             'outfh' => undef,
45             'infh' => undef,
46             @_,
47             };
48 0           bless ($self, $class);
49 0           $self->init();
50 0           return($self);
51             }
52              
53             sub init {
54 0     0 0   my $self = shift;
55              
56 0           my $label = $self->{'label'};
57 0           for(0..1) {
58 0           my $lang = uc($self->{'lang'});
59 0           my $module = "use Mail::Salsa::Lang::$lang qw(insidefh);\n";
60 0           eval($module);
61 0 0         ($@) ? ($self->{'lang'} = "en") : last;
62             }
63 0           $self->{'infh'} = insidefh();
64 0           return();
65             }
66              
67             sub filehandle {
68 0     0 0   my $self = shift;
69 0           $self->{'outfh'} = shift;
70 0           return();
71             }
72              
73             sub label {
74 0     0 0   my $self = shift;
75 0           $self->{'label'} = shift;
76 0           return();
77             }
78              
79             sub replace {
80 0     0 0   my $self = shift;
81 0           my $vars = {@_};
82              
83 0           my $label = $self->{'label'};
84 0           my $infh = $self->{'infh'};
85 0           my $outfh = $self->{'outfh'};
86              
87 0           my $evalcode = "";
88 0           for my $key (keys(%{$vars})) {
  0            
89 0           my $val = $vars->{$key};
90 0           $val =~ s/\@/\\@/g;
91 0           $evalcode .= "s{\\\$$key\\b}{$val}g;\n";
92             }
93 0           my $msg = 0;
94 0           while(<$infh>) {
95 0 0         if($msg) {
96 0 0         last if(/^\<\/template\>[\n\r]+/);
97 0           eval($evalcode);
98 0           s{^\.}{\.\.};
99 0           print $outfh $_;
100 0           next;
101             }
102 0 0         $msg = 1 if(/^\< *template +name=\"$label\" *\>[\n\r]+/);
103             }
104 0           return();
105             }
106              
107             1;
108             __END__