cvs commit: p5ee/App-Widget/lib/App TemplateEngine.pm

[email protected] (Stephen Adkins)
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
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: $@]" 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: $@]" 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: $@]" 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;
   }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.