[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