]> git.decadent.org.uk Git - maypole.git/commitdiff
Refactored handler_guts - put view processing in a separate
authorDavid Baird <cpan.zerofive@googlemail.com>
Mon, 3 Oct 2005 11:47:00 +0000 (11:47 +0000)
committerDavid Baird <cpan.zerofive@googlemail.com>
Mon, 3 Oct 2005 11:47:00 +0000 (11:47 +0000)
call. Planning to move the call to handler(), after calling handler_guts(), but
that breaks tests at the moment.

git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@383 48953598-375a-da11-a14b-00016c27c3ee

lib/Maypole.pm

index e9aec84a80b622b5baad0c28706e9238014add6f..73c9e75ed61d9918a180c1b0e6aedaee3a21ae10 100644 (file)
@@ -159,25 +159,33 @@ sub handler_guts
         }
     }
     
-    if ( !$r->output ) 
-    {    # You might want to do it yourself
-        eval { $status = $r->view_object->process($r) };
+    # unusual path - perhaps output has been set to an error message
+    return OK if $r->output;
+    
+    # normal path - no output has been generated yet
+    return $r->__call_process_view;
+}
+
+sub __call_process_view
+{
+    my ($r) = @_;
+    
+    my $status;
+    
+    eval { $status = $r->view_object->process($r) };
+    
+    if ( my $error = $@ ) 
+    {
+        $status = $r->call_exception($error);
         
-        if ( my $error = $@ ) 
+        if ( $status != OK ) 
         {
-            $status = $r->call_exception($error);
-            
-            if ( $status != OK ) 
-            {
-                warn "caught view error: $error" if $r->debug;
-                return $r->debug ? $r->view_object->error($r, $error) : ERROR;
-            }
+            warn "caught view error: $error" if $r->debug;
+            return $r->debug ? $r->view_object->error($r, $error) : ERROR;
         }
-        
-        return $status;
     }
     
-    return OK; 
+    return $status;
 }
 
 sub __load_model