X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FBase.pm;h=b1990e9b692eaa599db906f5085fb2563d7028e3;hb=34d28dfd33574ce30aca69fb8700b61111d97b92;hp=7536dc66aee3eecd8e5ed99c41579aad3b22b1c3;hpb=27708fc5f90d4794f082348049ac894f58224fad;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Base.pm b/lib/Catalyst/Base.pm index 7536dc6..b1990e9 100644 --- a/lib/Catalyst/Base.pm +++ b/lib/Catalyst/Base.pm @@ -72,10 +72,15 @@ See L Catalyst Base Class +This is the base class for all Catalyst components. It also handles +dispatch of actions for controllers. + =head1 METHODS =head2 $self->action_namespace($c) +Determine the namespace for actions in this component. + =cut sub action_namespace { @@ -88,12 +93,16 @@ sub action_namespace { =head2 $self->path_prefix($c) +alias for action_namespace + =cut sub path_prefix { shift->action_namespace(@_); } =head2 $self->register_actions($c) +register all actions for this component based on a given context. + =cut sub register_actions { @@ -127,20 +136,24 @@ sub register_actions { next; } my $reverse = $namespace ? "$namespace/$method" : $method; - my $action = $self->_action_class->new( - { - name => $method, - code => $code, - reverse => $reverse, - namespace => $namespace, - class => $class, - attributes => $attrs, - } + my $action = $self->create_action( + name => $method, + code => $code, + reverse => $reverse, + namespace => $namespace, + class => $class, + attributes => $attrs, ); + $c->dispatcher->register( $c, $action ); } } +sub create_action { + my $self = shift; + $self->_action_class->new( { @_ } ); +} + sub _parse_attrs { my ( $self, $c, $name, @attrs ) = @_; my %attributes;