Erste Version Template Toolkit Druck
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 10 Apr 2013 12:26:21 +0000 (14:26 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 25 Apr 2013 12:38:14 +0000 (14:38 +0200)
SL/Template/LaTeX.pm
SL/Template/OpenDocument.pm
SL/Template/Plugin/LxLatex.pm [new file with mode: 0644]
SL/Template/Simple.pm

index a862431..5d5008c 100644 (file)
@@ -17,7 +17,6 @@ sub new {
 
 sub format_string {
   my ($self, $variable) = @_;
-  my $form = $self->{"form"};
 
   $variable = $main::locale->quote_special_chars('Template/LaTeX', $variable);
 
@@ -257,6 +256,9 @@ sub _parse_config_option {
   if ($key eq 'tag-style') {
     $self->set_tag_style(split(m/\s+/, $value, 2));
   }
+  if ($key eq 'use-template-toolkit') {
+    $self->set_use_template_toolkit($value);
+  }
 }
 
 sub _parse_config_lines {
@@ -350,7 +352,14 @@ sub parse {
 
   $self->{"forced_pagebreaks"} = [];
 
-  my $new_contents = $self->parse_block($contents);
+  my $new_contents;
+  if ($self->{use_template_toolkit}) {
+    my $additional_params = $::form;
+
+    $::form->init_template->process(\$contents, $additional_params, \$new_contents) || die $::form->template->error;
+  } else {
+    $new_contents = $self->parse_block($contents);
+  }
   if (!defined($new_contents)) {
     $main::lxdebug->leave_sub();
     return 0;
index f9507f9..4eed5ea 100644 (file)
@@ -260,7 +260,14 @@ sub parse {
   $contents =~ s|</office:automatic-styles>|${new_styles}</office:automatic-styles>|;
   $contents =~ s|[\n\r]||gm;
 
-  my $new_contents = $self->parse_block($contents);
+  my $new_contents;
+  if ($self->{use_template_toolkit}) {
+    my $additional_params = $::form;
+
+    $::form->init_template->process(\$contents, $additional_params, \$new_contents) || die $::form->template->error;
+  } else {
+    $new_contents = $self->parse_block($contents);
+  }
   if (!defined($new_contents)) {
     $main::lxdebug->leave_sub();
     return 0;
diff --git a/SL/Template/Plugin/LxLatex.pm b/SL/Template/Plugin/LxLatex.pm
new file mode 100644 (file)
index 0000000..6a539bd
--- /dev/null
@@ -0,0 +1,27 @@
+package SL::Template::Plugin::LxLatex;
+
+use strict;
+use parent qw( Template::Plugin );
+
+my $cached_instance;
+
+sub new {
+  my $class = shift;
+
+  return $cached_instance ||= $class->SUPER::new(@_);
+}
+
+sub init {
+  my $self = shift;
+
+  $self->install_filter($self->{ _ARGS }->[0] || 'T8');
+
+  return $self;
+}
+
+sub filter {
+  my ($self, $text, $args) = @_;
+  return $::locale->quote_special_chars('Template/LaTeX', $text);
+}
+
+return 'SL::Template::Plugin::LxLatex';
index 926ef1f..b1f155b 100644 (file)
@@ -56,6 +56,13 @@ sub set_tag_style {
   $self->{substitute_vars_re} = "$self->{tag_start_qm}(.+?)$self->{tag_end_qm}";
 }
 
+sub set_use_template_toolkit {
+  my $self                    = shift;
+  my $value                   = shift;
+
+  $self->{use_template_toolkit} = $value;
+}
+
 sub cleanup {
   my ($self) = @_;
 }