use Tree::Simple::Visitor::FindByPath;
use Scalar::Util ();
-# Stringify to class
-use overload '""' => sub { return ref(shift) }, fallback => 1;
-
-
+#do these belong as package vars or should we build these via a builder method?
# Preload these action types
our @PRELOAD = qw/Index Path Regex/;
# Postload these action types
our @POSTLOAD = qw/Default/;
-has _tree => (is => 'rw');
-has _dispatch_types => (is => 'rw');
-has _registered_dispatch_types => (is => 'rw');
-has _method_action_class => (is => 'rw');
-has _action_container_class => (is => 'rw');
-has preload_dispatch_types => (is => 'rw', required => 1, lazy => 1, default => sub { [@PRELOAD] });
-has postload_dispatch_types => (is => 'rw', required => 1, lazy => 1, default => sub { [@POSTLOAD] });
-has _action_hash => (is => 'rw', required => 1, lazy => 1, default => sub { {} });
-has _container_hash => (is => 'rw', required => 1, lazy => 1, default => sub { {} });
+has _tree => (is => 'rw');
+has _dispatch_types => (is => 'rw', default => sub { [] }, required => 1, lazy => 1);
+has _registered_dispatch_types => (is => 'rw', default => sub { {} }, required => 1, lazy => 1);
+has _method_action_class => (is => 'rw', default => 'Catalyst::Action');
+has _action_container_class => (is => 'rw', default => 'Catalyst::ActionContainer');
+
+has preload_dispatch_types => (is => 'rw', required => 1, lazy => 1, default => sub { [@PRELOAD] });
+has postload_dispatch_types => (is => 'rw', required => 1, lazy => 1, default => sub { [@POSTLOAD] });
+has _action_hash => (is => 'rw', required => 1, lazy => 1, default => sub { {} });
+has _container_hash => (is => 'rw', required => 1, lazy => 1, default => sub { {} });
no Moose;
no warnings 'recursion';
- #moose todo: reaching inside another object is bad
- local $c->request->{arguments} = \@args;
+ my $orig_args = $c->request->arguments();
+ $c->request->arguments(\@args);
$action->dispatch( $c );
-
+ $c->request->arguments($orig_args);
+
return $c->state;
}
unshift @args, $arg;
}
- #Moose todo: This seems illegible, even if efficient.
s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg for grep { defined } @{$req->captures||[]};
$c->log->debug( 'Path is "' . $req->match . '"' )
sub setup_actions {
my ( $self, $c ) = @_;
- $self->_dispatch_types( [] );
- $self->_registered_dispatch_types( {} );
- $self->_method_action_class('Catalyst::Action');
- $self->_action_container_class('Catalyst::ActionContainer');
my @classes =
$self->_load_dispatch_types( @{ $self->preload_dispatch_types } );
for my $type (@types) {
my $class =
( $type =~ /^\+(.*)$/ ) ? $1 : "Catalyst::DispatchType::${type}";
- #eval "require $class";
+
eval { Class::MOP::load_class($class) };
Catalyst::Exception->throw( message => qq/Couldn't load "$class"/ )
if $@;
return @loaded;
}
+no Moose;
__PACKAGE__->meta->make_immutable;
=head2 meta