From ca9368a1e7bf081def4a83e8ee61717987ae3b64 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Sun, 23 May 2004 15:57:30 +0000 Subject: [PATCH] Updated to version 1.3 See http://www.patshaping.de/redirector/redirect.php?page=template-class --- modules/Template.pm | 76 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 64 insertions(+), 12 deletions(-) diff --git a/modules/Template.pm b/modules/Template.pm index e3fbb98..04893d1 100644 --- a/modules/Template.pm +++ b/modules/Template.pm @@ -1,12 +1,12 @@ package Template; # -# Template (Version 1.2a) +# Template (Version 1.3) # # Klasse zum Parsen von Templates # # Autor: Patrick Canterino -# Letzte Aenderung: 12.9.2003 +# Letzte Aenderung: 11.4.2004 # use strict; @@ -73,16 +73,19 @@ sub add_text($) # read_file() # -# Einlesen einer Vorlagendatei -# (Inhalt wird an bereits vorhandenen Text angehaengt) +# Einlesen einer Vorlagendatei und {INCLUDE}-Anweisungen ggf. verarbeiten +# (Text wird an bereits vorhandenen Text angehaengt) # -# Parameter: Datei zum Einlesen +# Parameter: 1. Datei zum Einlesen +# 2. Status-Code (Boolean): +# true => {INCLUDE}-Anweisungen nicht verarbeiten +# false => {INCLUDE}-Anweisungen verarbeiten (Standard) # # Rueckgabe: -nichts- (Template-Objekt wird modifiziert) -sub read_file($) +sub read_file($;$) { - my ($self,$tfile) = @_; + my ($self,$tfile,$not_include) = @_; local *FILE; open(FILE,"<$tfile") or croak "Open $tfile: $!"; @@ -90,6 +93,7 @@ sub read_file($) close(FILE) or croak "Closing $tfile: $!"; $self->add_text($content); + $self->parse_includes unless($not_include); } # fillin() @@ -128,18 +132,32 @@ sub fillin($$) sub fillin_array($$;$) { my ($self,$var,$array,$glue) = @_; - $glue = '' unless defined $glue; + $glue = "" unless defined $glue; $self->fillin($var,join($glue,@$array)); } +# to_file() +# +# Template in Datei schreiben +# +# Parameter: Datei-Handle +# +# Rueckgabe: Status-Code (Boolean) + +sub to_file($) +{ + my ($self,$handle) = @_; + return print $handle $self->get_template; +} + # parse_if_block() # # IF-Bloecke verarbeiten # # Parameter: 1. Name des IF-Blocks (das, was nach dem IF steht) -# 2. Statuscode (true => Inhalt anzeigen -# false => Inhalt nicht anzeigen +# 2. Status-Code (true => Inhalt anzeigen +# false => Inhalt nicht anzeigen # # Rueckgabe: -nichts- (Template-Objekt wird modifiziert) @@ -226,8 +244,8 @@ sub parse_if_block($$) # Bedingungstags in einem Vorlagentext verarbeiten # # Parameter: 1. Tagname -# 2. Statuscode (true => Tag-Inhalt anzeigen -# false => Tag-Inhalt nicht anzeigen +# 2. Status-Code (true => Tag-Inhalt anzeigen +# false => Tag-Inhalt nicht anzeigen # # Rueckgabe: -nichts- (Template-Objekt wird modifiziert) @@ -253,6 +271,40 @@ sub parse_condtag($$) $self->set_template($template); } +# parse_includes() +# +# {INCLUDE}-Anweisungen verarbeiten +# +# Parameter: -nichts- +# +# Rueckgabe: -nichts- (Template-Objekt wird modifiziert) + +sub parse_includes +{ + my $self = shift; + my $template = $self->get_template; + + while($template =~ /(\{INCLUDE (\S+?)\})/) + { + my ($directive,$file) = ($1,$2); + my $qm_directive = quotemeta($directive); + my $replacement = ""; + + if(-f $file) + { + local *FILE; + + open(FILE,"<$file") or croak "Open $file: $!"; + read(FILE, $replacement, -s $file); + close(FILE) or croak "Closing $file: $!"; + } + + $template =~ s/$qm_directive/$replacement/g; + } + + $self->set_template($template); +} + # ================== # Private Funktion # ================== -- 2.34.1