From: Dave Rolsky Date: Wed, 26 Jan 2011 20:44:35 +0000 (-0600) Subject: Greatly simplified internals by simply setting actions in the controller's config. X-Git-Tag: 0.02~4 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalystX-Routes.git;a=commitdiff_plain;h=9c4e8644a3b9035435bef38e59c706b926c04830 Greatly simplified internals by simply setting actions in the controller's config. No need for metaclass junk. --- diff --git a/lib/CatalystX/Routes/Role/Class.pm b/lib/CatalystX/Routes/Role/Class.pm deleted file mode 100644 index edf4529..0000000 --- a/lib/CatalystX/Routes/Role/Class.pm +++ /dev/null @@ -1,26 +0,0 @@ -package CatalystX::Routes::Role::Class; - -use Moose::Role; -use namespace::autoclean; - -has _routes => ( - traits => ['Hash'], - isa => 'HashRef[ArrayRef]', - handles => { - add_route => 'set', - get_route => 'get', - route_names => 'keys', - }, -); - -has _chain_points => ( - traits => ['Hash'], - isa => 'HashRef[ArrayRef]', - handles => { - add_chain_point => 'set', - get_chain_point => 'get', - chain_point_names => 'keys', - }, -); - -1; diff --git a/lib/CatalystX/Routes/Role/Controller.pm b/lib/CatalystX/Routes/Role/Controller.pm deleted file mode 100644 index 6918597..0000000 --- a/lib/CatalystX/Routes/Role/Controller.pm +++ /dev/null @@ -1,61 +0,0 @@ -package CatalystX::Routes::Role::Controller; - -use Moose::Role; -use namespace::autoclean; - -requires 'register_actions'; - -after register_actions => sub { - my $self = shift; - my $c = shift; - - for my $route ( $self->meta()->route_names() ) { - my ( $attrs, $method ) = @{ $self->meta()->get_route($route) }; - - $self->_add_cx_routes_action( $c, $route, $attrs, $method->body() ); - } - - for my $chain_point ( $self->meta()->chain_point_names() ) { - my ( $attrs, $code ) - = @{ $self->meta()->get_chain_point($chain_point) }; - - $self->_add_cx_routes_action( $c, $chain_point, $attrs, $code ); - } -}; - -sub _add_cx_routes_action { - my $self = shift; - my $c = shift; - my $name = shift; - my $attrs = shift; - my $code = shift; - - my $class = $self->catalyst_component_name; - my $namespace = $self->action_namespace($c); - - for my $key ( keys %{$attrs} ) { - my $parse_meth = "_parse_${key}_attr"; - - next unless $self->can($parse_meth); - - ( undef, my $value ) - = $self->$parse_meth( $c, $name, $attrs->{$key} ); - - $attrs->{$key} = [$value]; - } - - my $reverse = $namespace ? "${namespace}/$name" : $name; - - my $action = $self->create_action( - name => $name, - code => $code, - reverse => $reverse, - namespace => $namespace, - class => $class, - attributes => $attrs, - ); - - $c->dispatcher->register( $c, $action ); -} - -1;