X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/b849f0d37e42677bb6eb850272ba2bb22c57363f..49e7cf41f689d00e2b8497682c2a850acb2d18ab:/SL/Template/LaTeX.pm diff --git a/SL/Template/LaTeX.pm b/SL/Template/LaTeX.pm index 4bb4ce63d..31cb28fb3 100644 --- a/SL/Template/LaTeX.pm +++ b/SL/Template/LaTeX.pm @@ -71,9 +71,11 @@ sub _format_html { $content =~ s{ \r+ }{}gx; $content =~ s{ \n+ }{ }gx; - $content =~ s{ \s+ }{ }gx; + $content =~ s{ (?:\ |\s)+ }{ }gx; + $content =~ s{ (?:\ |\s)+$ }{}gx; + $content =~ s{ (?:
)+$ }{}gx; - my @parts = map { + my @parts = grep { $_ } map { if (substr($_, 0, 1) eq '<') { s{ +}{}g; $html_replace{$_} || ''; @@ -83,7 +85,10 @@ sub _format_html { } } split(m{(<.*?>)}x, $content); - return join('', @parts); + $content = join '', @parts; + $content =~ s{ (?: [\n\s] | \\newline )+$ }{}gx; + + return $content; } my %formatters = ( @@ -264,15 +269,15 @@ sub parse_block { $new_contents .= $self->substitute_vars(substr($contents, 0, $pos_foreach), @indices); substr($contents, 0, $pos_foreach) = ""; - if ($contents !~ m|^$self->{tag_start_qm}foreach (.+?)$self->{tag_end_qm}|) { + if ($contents !~ m|^($self->{tag_start_qm}foreach (.+?)$self->{tag_end_qm})|) { $self->{"error"} = "Malformed $self->{tag_start}foreach$self->{tag_end}."; $main::lxdebug->leave_sub(); return undef; } - my $var = $1; + my $var = $2; - substr($contents, 0, length($&)) = ""; + substr($contents, 0, length($1)) = ""; my $block; ($block, $contents) = $self->find_end($contents); @@ -415,13 +420,13 @@ sub parse { my $contents = join("", @lines); # detect pagebreak block and its parameters - if ($contents =~ /$self->{tag_start_qm}pagebreak\s+(\d+)\s+(\d+)\s+(\d+)\s*$self->{tag_end_qm}(.*?)$self->{tag_start_qm}end(\s*pagebreak)?$self->{tag_end_qm}/s) { - $self->{"chars_per_line"} = $1; - $self->{"lines_on_first_page"} = $2; - $self->{"lines_on_second_page"} = $3; - $self->{"pagebreak_block"} = $4; + if ($contents =~ /^(.*)($self->{tag_start_qm}pagebreak\s+(\d+)\s+(\d+)\s+(\d+)\s*$self->{tag_end_qm}(.*?)$self->{tag_start_qm}end(\s*pagebreak)?$self->{tag_end_qm})/s) { + $self->{"chars_per_line"} = $3; + $self->{"lines_on_first_page"} = $4; + $self->{"lines_on_second_page"} = $5; + $self->{"pagebreak_block"} = $6; - substr($contents, length($`), length($&)) = ""; + substr($contents, length($1), length($2)) = ""; } $self->{"forced_pagebreaks"} = []; @@ -589,7 +594,7 @@ sub parse_and_create_pdf { my $error; eval { - my $template = SL::Template::LaTeX->new($template_file_name, $local_form, \%::myconfig, $::lx_office_conf{paths}->{userspath}); + my $template = SL::Template::LaTeX->new(file_name => $template_file_name, form => $local_form); my $result = $template->parse($tex_fh) && $template->convert_to_pdf; die $template->{error} unless $result;