]> git.p6c8.net - devedit.git/blobdiff - modules/Template.pm
This commit was manufactured by cvs2svn to create tag 'version_2_3_2'.
[devedit.git] / modules / Template.pm
index dd0f24baa860664dbe401e50a078edacfbc34137..148feed53dd80a47082ebef55cd444cbbadab4f6 100644 (file)
@@ -1,12 +1,12 @@
 package Template;
 
 #
 package Template;
 
 #
-# Template (Version 1.4)
+# Template (Version 1.4a)
 #
 # Klasse zum Parsen von Templates
 #
 # Autor:            Patrick Canterino <patrick@patshaping.de>
 #
 # Klasse zum Parsen von Templates
 #
 # Autor:            Patrick Canterino <patrick@patshaping.de>
-# Letzte Aenderung: 5.2.2005
+# Letzte Aenderung: 21.3.2005
 #
 
 use strict;
 #
 
 use strict;
@@ -180,7 +180,18 @@ sub parse_if_block($$)
   my $start    = index($template,'{IF '.$name.'}');
   my $tpl_tmp  = substr($template,$start);
   my @splitted = split(/\{ENDIF\}/,$tpl_tmp);
   my $start    = index($template,'{IF '.$name.'}');
   my $tpl_tmp  = substr($template,$start);
   my @splitted = split(/\{ENDIF\}/,$tpl_tmp);
-  push(@splitted,'') if(substr($template,-7) eq '{ENDIF}');
+
+  # Wenn sich am Ende der Zeichenkette {ENDIF} befinden, werden diese
+  # von split() ignoriert, was zu einem Verschachtelungsfehler fuehrt
+  # Die fehlenden leeren Zeichenketten muessen von Hand eingefuegt werden
+
+  my $x = 1;
+
+  while(substr($tpl_tmp,-7*$x,7) eq '{ENDIF}')
+  {
+   push(@splitted,'');
+   $x++;
+  }
 
   my $block = ''; # Kompletter bedingter Block
   my $ifs   = 0;  # IF-Zaehler (wird fuer jedes IF erhoeht und fuer jedes ENDIF erniedrigt)
 
   my $block = ''; # Kompletter bedingter Block
   my $ifs   = 0;  # IF-Zaehler (wird fuer jedes IF erhoeht und fuer jedes ENDIF erniedrigt)

patrick-canterino.de