[jifty-devel] Re: [Jifty-commit] r769 - in jifty/trunk: lib/Jifty lib/Jifty/Mason t

Jesse Vincent jesse at bestpractical.com
Thu Mar 30 01:40:08 EST 2006


* And also started factoring out some of the mason-specific stuff into a
  set of  templating system calls.
* And accidentally commiteed everything at once


On Thu, Mar 30, 2006 at 01:38:19AM -0500, jifty-commit at lists.jifty.org wrote:
> Author: jesse
> Date: Thu Mar 30 01:38:17 2006
> New Revision: 769
> 
> Modified:
>    jifty/trunk/   (props changed)
>    jifty/trunk/lib/Jifty/Dispatcher.pm
>    jifty/trunk/lib/Jifty/Mason/Halo.pm
>    jifty/trunk/lib/Jifty/Web.pm
>    jifty/trunk/t/01-dependencies.t
> 
> Log:
>  r10545 at hualien:  jesse | 2006-03-30 15:37:09 +0900
>  * test for indented requirements
> 
> 
> Modified: jifty/trunk/lib/Jifty/Dispatcher.pm
> ==============================================================================
> --- jifty/trunk/lib/Jifty/Dispatcher.pm	(original)
> +++ jifty/trunk/lib/Jifty/Dispatcher.pm	Thu Mar 30 01:38:17 2006
> @@ -409,13 +409,14 @@
>  
>  
>      local $Dispatcher = $self->new();
> +
> +    # XXX TODO: refactor this out somehow?
>      # We don't want the previous mason request hanging aroudn once we start dispatching
>      local $HTML::Mason::Commands::m = undef;
>      # Mason introduces a DIE handler that generates a mason exception
>      # which in turn generates a backtrace. That's fine when you only
>      # do it once per request. But it's really, really painful when you do it
>      # often, as is the case with fragments
> -    #
>      local $SIG{__DIE__} = 'DEFAULT';
>  
>      eval {
> @@ -672,14 +673,14 @@
>      $path ||= $self->{path};
>      $self->log->debug("Showing path $path");
>  
> -    # If we've got a working directory (from an "under" rule) and we have 
> +    # If we've got a working directory (from an "under" rule) and we have
>      # a relative path, prepend the working directory
>      $path = "$self->{cwd}/$path" unless $path =~ m{^/};
>  
> -    # If we're requesting a directory, go looking for the index.html
> -    if ( $path =~ m{/$} and
> -        Jifty->handler->mason->interp->comp_exists( $path . "/index.html" ) )
> +    # When we're requesting a directory, go looking for the index.html
> +    if ( $path =~ m{/$} and $self->template_exists( $path . "/index.html" ) )
>      {
> +
>          $path .= "/index.html";
>      }
>  
> @@ -687,40 +688,18 @@
>      # the directory itself
>  
>      # XXX TODO, we should search all component roots
> -    
> +
>      if ($path !~ m{/$}
> -        and -d Jifty::Util->absolute_path(
> -            Jifty->config->framework('Web')->{'TemplateRoot'} . $path
> -        )
> -        )
> +        and -d Jifty::Util->absolute_path( Jifty->config->framework('Web')->{'TemplateRoot'} . $path))
>      {
> -
>          $self->_do_show( $path . "/" );
>      }
>  
>      # Set the request path
>      request->path($path);
> +    $self->render_template(request->path);
>  
> -    $self->log->debug("Having Mason handle ".request->path);
> -    eval { Jifty->handler->mason->handle_comp(request->path); };
> -    my $err = $@;
> -    # Handle parse errors
> -    if ( $err and not eval { $err->isa( 'HTML::Mason::Exception::Abort' ) } ) {
> -        # Save the request away, and redirect to an error page
> -        Jifty->web->response->error($err);
> -        my $c = Jifty::Continuation->new(
> -            request  => Jifty->web->request,
> -            response => Jifty->web->response,
> -            parent   => Jifty->web->request->continuation,
> -        );
> -
> -        warn "$err";
>  
> -        # Redirect with a continuation
> -        Jifty->web->_redirect( "/__jifty/error/mason_internal_error?J:C=" . $c->id );
> -    } elsif ($err) {
> -        die $err;
> -    }
>      last_rule;
>  }
>  
> @@ -933,6 +912,58 @@
>      $glob;
>  }
>  
> +=head2 template_exists PATH
> +
> +Returns true if PATH is a valid template inside your template root.
> +
> +=cut
> +
> +sub template_exists {
> +    my $self = shift;
> +    my $template = shift;
> +
> +      return  Jifty->handler->mason->interp->comp_exists( $template);
> +
> +}
> +
> +
> +=head2 render_template PATH
> +
> +Use our templating system to render a template. If there's an error, do the right thing.
> +
> +
> +=cut
> +
> +sub render_template {
> +    my $self = shift;
> +    my $template = shift;
> +
> +    $self->log->debug( "Handling template " . $template );
> +    eval { Jifty->handler->mason->handle_comp( $template ); };
> +    my $err = $@;
> +
> +    # Handle parse errors
> +    if ( $err and not eval { $err->isa('HTML::Mason::Exception::Abort') } ) {
> +
> +        # Save the request away, and redirect to an error page
> +        Jifty->web->response->error($err);
> +        my $c = Jifty::Continuation->new(
> +            request  => Jifty->web->request,
> +            response => Jifty->web->response,
> +            parent   => Jifty->web->request->continuation,
> +        );
> +
> +        warn "$err";
> +
> +        # Redirect with a continuation
> +        Jifty->web->_redirect(
> +            "/__jifty/error/mason_internal_error?J:C=" . $c->id );
> +    }
> +    elsif ($err) {
> +        die $err;
> +    }
> +
> +}
>  
>  
>  1;
> 
> Modified: jifty/trunk/lib/Jifty/Mason/Halo.pm
> ==============================================================================
> --- jifty/trunk/lib/Jifty/Mason/Halo.pm	(original)
> +++ jifty/trunk/lib/Jifty/Mason/Halo.pm	Thu Mar 30 01:38:17 2006
> @@ -3,6 +3,7 @@
>  package Jifty::Mason::Halo;
>  use base qw/HTML::Mason::Plugin/;
>  use Time::HiRes ();
> +use YAML ();
>  Jifty->handle->log_sql_statements(1);
>  
>  =head1 NAME
> 
> Modified: jifty/trunk/lib/Jifty/Web.pm
> ==============================================================================
> --- jifty/trunk/lib/Jifty/Web.pm	(original)
> +++ jifty/trunk/lib/Jifty/Web.pm	Thu Mar 30 01:38:17 2006
> @@ -122,7 +122,6 @@
>  # Create the Jifty::Web::Session object
>  sub setup_session {
>      my $self = shift;
> -    my $m = Jifty->web->mason;
>  
>      return if $self->session->loaded;
>      $self->session->load();
> @@ -893,24 +892,6 @@
>      return '';
>  }
>  
> -=head3 render_request_debug_info
> -
> -Outputs the request arguments.
> -
> -=cut
> -
> -sub render_request_debug_info {
> -    my $self = shift;
> -    my $m    = $self->mason;
> -    use YAML;
> -    $m->out('<div class="debug">');
> -    $m->out('<hr /><h1>Request args</h1><pre>');
> -    $m->out( YAML::Dump( { $m->request_args } ) );
> -    $m->out('</pre></div>');
> -
> -    return '';
> -}
> -
>  =head3 query_string KEY => VALUE [, KEY => VALUE [, ...]]
>  
>  Returns an URL-encoded query string piece representing the arguments
> 
> Modified: jifty/trunk/t/01-dependencies.t
> ==============================================================================
> --- jifty/trunk/t/01-dependencies.t	(original)
> +++ jifty/trunk/t/01-dependencies.t	Thu Mar 30 01:38:17 2006
> @@ -36,7 +36,7 @@
>      ok(open(MAKEFILE,"Makefile.PL"), "Opened Makefile");
>      my $data = <MAKEFILE>;
>      close(FILE);
> -    while ($data =~ /^requires\('([\w:]+)'.*?(?:#(.*))?$/gm) {
> +    while ($data =~ /^\s*?requires\('([\w:]+)'.*?(?:#(.*))?$/gm) {
>          $required{$1}++;
>          if (defined $2 and length $2) {
>              $required{$_}++ for split ' ', $2;
> _______________________________________________
> Jifty-commit mailing list
> Jifty-commit at lists.jifty.org
> http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-commit
> 

-- 


More information about the jifty-devel mailing list