# #
# File: shared/Template.pm #
# #
-# Authors: André Malo <nd@o3media.de>, 2001-06-16 #
-# Frank Schoenmann <fs@tower.de>, 2001-06-04 #
+# Authors: André Malo <nd@o3media.de> #
+# Frank Schönmann <fs@tower.de> #
# #
# Description: Handle XML based HTML-Templates #
# #
use strict;
use vars qw(
$xml_dom_used
- $VERSION
);
-use Carp qw(
- croak
- confess
-);
+use Carp qw(croak);
BEGIN {
$xml_dom_used = eval q[
#
# 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
#
$self;
}
-### sub file ###################################################################
+### file () ####################################################################
#
# assign new template file to object
# parse the template file
$old;
}
-### sub insert #################################################################
+### insert () ##################################################################
#
# return the placeholder surrounded by meta delimiters
#
$self -> {metaon} . $name . $self -> {metaoff};
}
-### sub list ###################################################################
+### list () ####################################################################
#
# fill in a complete list
#
#
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
#
\$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
#
return; # anything failed (??)
}
-### sub parse_if ###############################################################
+### parse_if () ################################################################
#
# parse conditional blocks
#