Merge master into gsoc_breadboard
[catagits/Catalyst-Runtime.git] / lib / Catalyst / IOC.pm
index 8384566..4b25e1b 100644 (file)
@@ -34,12 +34,15 @@ sub container (&) {
     };
 }
 
-sub model (&)      { _subcontainer( shift, (caller)[0], 'model' )      }
-sub view (&)       { _subcontainer( shift, (caller)[0], 'view' )       }
-sub controller (&) { _subcontainer( shift, (caller)[0], 'controller' ) }
+sub model (&)      { &_subcontainer }
+sub view (&)       { &_subcontainer }
+sub controller (&) { &_subcontainer }
 
-sub _subcontainer (&$$) {
-    my ( $code, $caller, $subcontainer ) = @_;
+sub _subcontainer {
+    my $code = shift;
+
+    my ( $caller, $f, $l, $subcontainer ) = caller(1);
+    $subcontainer =~ s/^Catalyst::IOC:://;
 
     no strict 'refs';
     local ${"${caller}::current_container"} =
@@ -61,7 +64,7 @@ sub component ($;%) {
     $args{dependencies}{application_name} = depends_on( '/application_name' );
 
     my $lifecycle    = $args{lifecycle} || 'Singleton';
-    $args{lifecycle} = grep( m/^$lifecycle$/, qw/COMPONENTSingleton Request/)
+    $args{lifecycle} = grep( m/^$lifecycle$/, qw/COMPONENTSingleton Request/ )
                      ? "+Catalyst::IOC::LifeCycle::$lifecycle"
                      : $lifecycle
                      ;
@@ -158,7 +161,7 @@ Sets up the controller container to be customised.
 
 =head2 component
 
-Adds a component to the subcontainer. Works like L<Bread::Board::service>.
+Adds a component to the sub-container. Works like L<Bread::Board::service>.
 
 =head1 AUTHORS