X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/4b6fd7d022e006a1309d60b1a044b0f0fec28ef0..0fba3edda47fca21bedb14eb88e0f5f8d983bb38:/SL/Template/Excel.pm diff --git a/SL/Template/Excel.pm b/SL/Template/Excel.pm new file mode 100644 index 000000000..3ed7618ac --- /dev/null +++ b/SL/Template/Excel.pm @@ -0,0 +1,88 @@ +package SL::Template::Excel; + +use SL::Template::Simple; + +use vars qw(@ISA); + +@ISA = qw(SL::Template::Simple); + +sub new { + my $type = shift; + + my $self = $type->SUPER::new(@_); + + return $self; +} + +sub _init { + my $self = shift; + + $self->{source} = shift; + $self->{form} = shift; + $self->{myconfig} = shift; + $self->{userspath} = shift; + + $self->{error} = undef; + + $self->set_tag_style('<<', '>>'); +} + +sub get_mime_type() { + my ($self) = @_; + + return "application/msexcel"; +} + +sub uses_temp_file { + return 1; +} + +sub parse { + $main::lxdebug->enter_sub(); + + my $self = shift; + local *OUT = shift; + my $form = $self->{"form"}; + + open(IN, "$form->{templates}/$form->{IN}") or do { $self->{"error"} = "$!"; return 0; }; + my @lines = ; + close IN; + + my $contents = join("", @lines); + my @indices; + $contents =~ s{ + $self->{tag_start} [<]* (\s?) [<>\s]* ([\w\s]+) [<>\s]* $self->{tag_end} + }{ + $self->format_vars(align_right => $1 ne '', varstring => $2, length => length($&), indices => \@indices) + }egx; + + if (!defined($contents)) { + $main::lxdebug->leave_sub(); + return 0; + } + + print OUT $contents; + + $main::lxdebug->leave_sub(); + return 1; +} + +sub format_vars { + my ($self, %params) = @_; + my $form = $self->{"form"}; + my @indices = @{ $params{indices} }; + my $align_right = $params{align_right}; + my $varstring = $params{varstring}; + my $length = $params{length}; + + $varstring =~ s/(\w+)/ $self->_get_loop_variable($1, 0, @indices) /eg; + my $old_string=$varstring; + my $new_string = sprintf "%*s", ($align_right ? 1 : -1 ) * $length, $varstring; + if (!defined($new_string) || $new_string eq ''){ + $main::lxdebug->message(0, 'varstring' . $varstring . "old" . $old_string); + # return substr $varstring, ($align_right ? (0, $length) : -$length); + } + return substr $new_string, ($align_right ? (0, $length) : -$length); +} + +1;