X-Git-Url: https://git.p6c8.net/selfforum.git/blobdiff_plain/920bb240f2bab1555b7a45cfae4f15d0ddb8df97..69cc2ea1cf06c310ec4079e301e360f78802c34b:/selfforum-cgi/shared/Template.pm?ds=inline diff --git a/selfforum-cgi/shared/Template.pm b/selfforum-cgi/shared/Template.pm index 16562c9..5dc6322 100644 --- a/selfforum-cgi/shared/Template.pm +++ b/selfforum-cgi/shared/Template.pm @@ -4,8 +4,8 @@ package Template; # # # File: shared/Template.pm # # # -# Authors: André Malo , 2001-04-12 # -# Frank Schoenmann , 2001-06-04 # +# Authors: André Malo # +# Frank Schönmann # # # # Description: Handle XML based HTML-Templates # # # @@ -14,13 +14,9 @@ package Template; use strict; use vars qw( $xml_dom_used - $VERSION ); -use Carp qw( - croak - confess -); +use Carp qw(croak); BEGIN { $xml_dom_used = eval q[ @@ -34,10 +30,14 @@ BEGIN { # # Version check # -$VERSION = do { my @r =(q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +# last modified: +# $Date$ (GMT) +# by $Author$ +# +sub VERSION {(q$Revision$ =~ /([\d.]+)\s*$/)[0] or '0.0'} -### sub new #################################################################### +### new () ##################################################################### # # constructor # @@ -56,7 +56,7 @@ sub new { $self; } -### sub file ################################################################### +### file () #################################################################### # # assign new template file to object # parse the template file @@ -77,7 +77,7 @@ sub file { $old; } -### sub insert ################################################################# +### insert () ################################################################## # # return the placeholder surrounded by meta delimiters # @@ -96,7 +96,7 @@ sub insert { $self -> {metaon} . $name . $self -> {metaoff}; } -### sub list ################################################################### +### list () #################################################################### # # fill in a complete list # @@ -107,19 +107,36 @@ sub insert { # sub list { my $self = shift; - my $name = shift; croak "no template file specified" unless (defined $self -> {file}); -# no warnings 'uninitialized'; - my $list = join '' => map { ${ $self -> scrap ($name, $_) } } @{ +shift }; + $self -> joinlist ('' => @_); +} + +### joinlist () ################################################################ +# +# fill in a complete list, using a scrap between the list elements +# +# Params: $join - joining string (or stringref) +# $name - name of the atomic list scrap +# $array - list of hashes (same strcuture like the hash used by 'scrap') +# +# Return: scalar reference - filled in list +# +sub joinlist { + my $self = shift; + my $join = shift; + $join = $$join if ref($join); + my $name = shift; + + my $list = join $join => map { ${ $self -> scrap ($name, $_) } } @{ +shift }; # return \$list; } -### sub scrap ################################################################## +### scrap () ################################################################### # # fill in a template scrap # @@ -198,7 +215,43 @@ sub scrap { \$scrap; } -### sub parse_file ############################################################# +### printscrap () ############################################################## +# +# fill in a template scrap and print to STDOUT +# +# Params: $name name of the scrap +# ... +# $no_nl 1 - remove newlines (\n) +# 0 - do no such thing +# +# Return: success code (boolean) +# +sub printscrap { + my $self = shift; + + $self -> scrap2file (\*STDOUT, @_); +} + +### scrap2file () ############################################################## +# +# fill in a template scrap and print to a file handle +# +# Params: $handle filehandle +# $name name of the scrap +# ... +# $no_nl 1 - remove newlines (\n) +# 0 - do no such thing +# +# Return: success code (boolean) +# +sub scrap2file { + my $self = shift; + my $handle = shift; + + print $handle ${$self->scrap(@_)}; +} + +### parse_file () ############################################################## # # read in and parse template file # @@ -298,7 +351,7 @@ sub parse_file { return; # anything failed (??) } -### sub parse_if ############################################################### +### parse_if () ################################################################ # # parse conditional blocks #