model view controller methods in Catalyst::IOC
André Walker [Sat, 20 Aug 2011 22:37:48 +0000 (19:37 -0300)]
lib/Catalyst/IOC.pm

index a71bddb..7072aef 100644 (file)
@@ -29,14 +29,18 @@ sub container (&) {
     };
 }
 
-sub model (&) {
-    my $code = shift;
-    my $caller = caller;
-    local ${"${caller}::current_container"} = ${"${caller}::current_container"}->get_sub_container('model');
+sub model (&)      { _subcontainer( shift, caller, 'model' )      }
+sub view (&)       { _subcontainer( shift, caller, 'view' )       }
+sub controller (&) { _subcontainer( shift, caller, 'controller' ) }
+
+sub _subcontainer (&$$) {
+    my ( $code, $caller, $subcontainer ) = @_;
+    local ${"${caller}::current_container"} =
+        ${"${caller}::current_container"}->get_sub_container($subcontainer);
     $code->();
 }
 
-sub component {
+sub component ($;%) {
     my ($name, %args) = @_;
     my $caller = caller;
     $args{dependencies} ||= {};
@@ -116,6 +120,16 @@ Catalyst::IOC - IOC for Catalyst, based on Bread::Board
 
 =head1 METHODS
 
+=head2 container
+
+=head2 model
+
+=head2 view
+
+=head2 controller
+
+=head2 component
+
 =head1 AUTHORS
 
 Catalyst Contributors, see Catalyst.pm