cvsuser     02/05/09 15:16:30

  Modified:    P5EEx/Blue/P5EEx/Blue TemplateEngine.pm
  Log:
  changed builtin engine to use [% %] rather than { }, also used eval so undefined 
widgets wouldn't croak
  
  Revision  Changes    Path
  1.5       +30 -18    p5ee/P5EEx/Blue/P5EEx/Blue/TemplateEngine.pm
  
  Index: TemplateEngine.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/TemplateEngine.pm,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -w -r1.4 -r1.5
  --- TemplateEngine.pm 14 Apr 2002 03:52:08 -0000      1.4
  +++ TemplateEngine.pm 9 May 2002 22:16:30 -0000       1.5
  @@ -1,6 +1,6 @@
   
   #############################################################################
  -## $Id: TemplateEngine.pm,v 1.4 2002/04/14 03:52:08 spadkins Exp $
  +## $Id: TemplateEngine.pm,v 1.5 2002/05/09 22:16:30 spadkins Exp $
   #############################################################################
   
   package P5EEx::Blue::TemplateEngine;
  @@ -271,23 +271,31 @@
       $self->{context}->dbgprint("DataTable->substitute()")
           if ($P5EEx::Blue::DEBUG && $self->{context}->dbg());
   
  -    my ($phrase, $var, $value, $context);
  +    my ($phrase, $var, $value, $context, $expand);
       $context = $self->{context};
       $values = {} if (! defined $values);
   
  -    while ( $template_text =~ /^\[([^\[\]]+)\]$/ ) {
  +    while ( $template_text =~ /^\{([^\{\}]+)\}$/ ) {
           $phrase = $1;
  -        while ( $phrase =~ /\{([^\{\}]+)\}/ ) {
  -            $var = $1;
  -            if (defined $values->{$var}) {
  +        while ( $phrase =~ /\[%(\+?)([^%]+)%\]/ ) {
  +            $expand = $1;
  +            $var    = $2;
  +            if ($expand) {
  +                eval {
  +                    $value = $context->widget($var)->html();
  +                };
  +                $value = "[$var: not yet defined]" if ($@);
  +                $phrase =~ s/\[%\+$var%\]/$value/g;
  +            }
  +            elsif (defined $values->{$var}) {
                   $value = $values->{$var};
  -                $phrase =~ s/\{$var\}/$value/g;
  +                $phrase =~ s/\[%$var%\]/$value/g;
               }
               else {
                   if ($var =~ /^(.+)\.([^.]+)$/) {
                       $value = $context->wget($1, $2);
                       if (defined $value) {
  -                        $phrase =~ s/\{$var\}/$value/g;
  +                        $phrase =~ s/\[%$var%\]/$value/g;
                       }
                       else {
                           $phrase = "";
  @@ -299,30 +307,34 @@
               }
           }
           if ($phrase eq "") {
  -            $template_text =~ s/\[[^\[\]]+\]\n?//;  # zap it including (optional) 
ending newline
  +            $template_text =~ s/^\{[^\{\}]+\}\n?//;  # zap it including (optional) 
ending newline
           }
           else {
  -            $template_text =~ s/\[[^\[\]]+\]/$phrase/;
  +            $template_text =~ s/^\{[^\{\}]+\}/$phrase/;
           }
       }
  -    while ( $template_text =~ /\{([^\{\}]+)\}/ ) {  # vars of the form {var} or 
{%var}
  -        $var = $1;
  -        if ($var =~ s/^%//) {
  +    while ( $template_text =~ /\[%(\+?)([^%]+)%\]/ ) {  # vars of the form [%var%] 
or [%+var%]
  +        $expand = $1;
  +        $var    = $2;
  +        if ($expand) {
  +            eval {
               $value = $context->widget($var)->html();
  -            $template_text =~ s/\{%$var\}/$value/g;
  +            };
  +            $value = "[$var: not yet defined]" if ($@);
  +            $template_text =~ s/\[%\+$var%\]/$value/g;
           }
           elsif (defined $values->{$var}) {
               $value = $values->{$var};
  -            $template_text =~ s/\{$var\}/$value/g;
  +            $template_text =~ s/\[%$var%\]/$value/g;
           }
           else {
               $value = "";
               if ($var =~ /^(.+)\.([^.]+)$/) {
                   $value = $context->wget($1, $2);
               }
  -        }
           $value = "" if (!defined $value);
           $template_text =~ s/\{$var\}/$value/g;
  +        }
       }
       $template_text;
   }
  
  
  


Reply via email to