package Template::Recall::Base;
use strict;
no warnings;
our $VERSION='0.06';
sub render {
my ( $class, $template, $hash_ref, $delims ) = @_;
if ( not defined ($template) ) { return "Template::Recall::Base::render() 'template' parameter not present"; }
if ( ref($hash_ref) ) {
foreach my $k ( keys %{$hash_ref} ) {
# $delims must be 2 element array reference
if ( ref($delims) and $#{$delims} == 1 ) {
my $r = ${$delims}[0] . '\s*' . $k . '\s*' . ${$delims}[1];
$template =~ s/$r/${$hash_ref}{$k}/g;
}
else {
$template =~ s/$k/${$hash_ref}{$k}/g;
}
} # foreach
} # if
# Do trimming, if so flagged
return trim($class->{'trim'}, $template) if defined($class->{'trim'});
return $template;
} # render()
# Trim output if directed to do so
sub trim {
my ($trim, $template) = @_;
return $template if !defined($trim);
if ($trim eq 'left' or $trim eq 'l') {
$template =~ s/^\s+//g;
return $template;
}
if ($trim eq 'right' or $trim eq 'r') {
$template =~ s/\s+$//g;
return $template;
}
if ($trim eq 'both' or $trim eq 'b') {
$template =~ s/^\s+|\s+$//g;
return $template;
}
} # trim()
1;