cvsuser     05/08/09 12:19:21

  Modified:    App-Widget/lib/App TemplateEngine.pm
  Log:
  use vars like {pi} as well as [%pi%]
  
  Revision  Changes    Path
  1.4       +43 -60    p5ee/App-Widget/lib/App/TemplateEngine.pm
  
  Index: TemplateEngine.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Widget/lib/App/TemplateEngine.pm,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TemplateEngine.pm 2 Sep 2004 21:05:00 -0000       1.3
  +++ TemplateEngine.pm 9 Aug 2005 19:19:21 -0000       1.4
  @@ -129,12 +129,14 @@
   =cut
   
   sub render {
  +    &App::sub_entry if ($App::trace);
       my ($self, $template) = @_;
   
       my ($template_text, $values, $text);
       $template_text = $self->read_template($template);
       $values = $self->prepare_values();
       $text = $self->substitute($template_text, $values);
  +    &App::sub_exit($text) if ($App::trace);
       $text;
   }
   
  @@ -184,6 +186,7 @@
   =cut
   
   sub read_template {
  +    &App::sub_entry if ($App::trace);
       my ($self, $template) = @_;
   
       my ($template_dir, $template_text);
  @@ -201,6 +204,7 @@
           $template_text = "Template [$template_dir/$template] not found.";
       }
   
  +    &App::sub_exit($template_text) if ($App::trace);
       return($template_text);
   }
   
  @@ -223,26 +227,27 @@
   =cut
   
   sub prepare_values {
  +    &App::sub_entry if ($App::trace);
       my ($self) = @_;
   
  -    my ($session, %values);
  -    $session = $self->{context}->session();
  +    #my ($session, %values);
  +    #$session = $self->{context}->session();
   
  -    # OK. I'm breaking some of the encapsulation.
  -    # They say Perl is post-modern. ;-)
  +    #if (defined $session->{cache}{SessionObject}{session} &&
  +    #    ref($session->{cache}{SessionObject}{session}) eq "HASH") {
  +    #    %values = %{$session->{cache}{SessionObject}{session}}; # make a 
copy
  +    #}
  +    #if (defined $session->{cache}{SessionObject} && 
ref($session->{cache}{SessionObject}) eq "HASH") {
  +    #    $values{SESSIONOBJECT} = $session->{cache}{SessionObject};  # add 
ref to higher level
  +    #}
  +    #if (defined $session->{cache} && ref($session->{cache}) eq "HASH") {
  +    #    $values{SESSION} = $session->{cache};         # add ref to higher 
level
  +    #}
   
  -    if (defined $session->{cache}{SessionObject}{session} &&
  -        ref($session->{cache}{SessionObject}{session}) eq "HASH") {
  -        %values = %{$session->{cache}{SessionObject}{session}}; # make a copy
  -    }
  -    if (defined $session->{cache}{SessionObject} && 
ref($session->{cache}{SessionObject}) eq "HASH") {
  -        $values{SESSIONOBJECT} = $session->{cache}{SessionObject};  # add 
ref to higher level
  -    }
  -    if (defined $session->{cache} && ref($session->{cache}) eq "HASH") {
  -        $values{SESSION} = $session->{cache};         # add ref to higher 
level
  -    }
  +    my $values = $self->{context}->options();
   
  -    return(\%values);
  +    &App::sub_exit($values) if ($App::trace);
  +    return($values);
   }
   
   #############################################################################
  @@ -262,57 +267,37 @@
   
       $text = $template_engine->substitute($template_text, $values);
   
  -This method substitutes 
  -(No subclass of this class need be used if the 
  -
   =cut
   
   sub substitute {
  +    &App::sub_entry if ($App::trace);
       my ($self, $template_text, $values) = @_;
   
       my ($phrase, $var, $value, $context, $expand);
       $context = $self->{context};
       $values = {} if (! defined $values);
   
  -    while ( $template_text =~ /^\{([^\{\}]+)\}$/ ) {
  -        $phrase = $1;
  -        while ( $phrase =~ /\[%(\+?)([^%]+)%\]/ ) {
  -            $expand = $1;
  -            $var    = $2;
  -            if ($expand) {
  -                eval {
  -                    $value = $context->widget($var)->html();
  -                };
  -                $value = "[$var: [EMAIL PROTECTED]" if ($@);
  -                $phrase =~ s/\[%\+$var%\]/$value/g;
  -            }
  -            elsif (defined $values->{$var}) {
  -                $value = $values->{$var};
  -                $phrase =~ s/\[%$var%\]/$value/g;
  -            }
  -            else {
  -                if ($var =~ /^(.+)\.([^.]+)$/) {
  -                    $value = $context->so_get($1, $2);
  -                    if (defined $value) {
  -                        $phrase =~ s/\[%$var%\]/$value/g;
  -                    }
  -                    else {
  -                        $phrase = "";
  -                    }
  -                }
  -                else {
  -                    $phrase = "";
  -                }
  -            }
  +    while ( $template_text =~ /\[%(\+?)([^%]+)%\]/ ) {  # vars of the form 
[%var%] or [%+var%]
  +        $expand = $1;
  +        $var    = $2;
  +        if ($expand) {
  +            eval {
  +                $value = $context->widget($var)->html();
  +            };
  +            $value = "[$var: [EMAIL PROTECTED]" if ($@);
           }
  -        if ($phrase eq "") {
  -            $template_text =~ s/^\{[^\{\}]+\}\n?//;  # zap it including 
(optional) ending newline
  +        elsif (defined $values->{$var}) {
  +            $value = $values->{$var};
           }
           else {
  -            $template_text =~ s/^\{[^\{\}]+\}/$phrase/;
  +            $value = $context->so_get($var);
  +            $value = $values->{$var} if (!defined $value);
  +            $value = "" if (!defined $value);
           }
  +        $template_text =~ s/\[%\+$var%\]/$value/g;
       }
  -    while ( $template_text =~ /\[%(\+?)([^%]+)%\]/ ) {  # vars of the form 
[%var%] or [%+var%]
  +
  +    while ( $template_text =~ /\{(\+?)([a-zA-Z][a-zA-Z0-9_.-]*)\}/ ) {  # 
vars of the form {var} or {+var}
           $expand = $1;
           $var    = $2;
           if ($expand) {
  @@ -320,21 +305,19 @@
                   $value = $context->widget($var)->html();
               };
               $value = "[$var: [EMAIL PROTECTED]" if ($@);
  -            $template_text =~ s/\[%\+$var%\]/$value/g;
           }
           elsif (defined $values->{$var}) {
               $value = $values->{$var};
  -            $template_text =~ s/\[%$var%\]/$value/g;
           }
           else {
  -            $value = "";
  -            if ($var =~ /^(.+)\.([^.]+)$/) {
  -                $value = $context->so_get($1, $2);
  -            }
  +            $value = $context->so_get($var);
  +            $value = $values->{$var} if (!defined $value);
               $value = "" if (!defined $value);
  -            $template_text =~ s/\{$var\}/$value/g;
           }
  +        $template_text =~ s/\{$var\}/$value/g;
       }
  +
  +    &App::sub_exit($template_text) if ($App::trace);
       $template_text;
   }
   
  
  
  

Reply via email to