}
# Execute the auto chain
+ my $auto = 0;
for my $auto ( @{ $c->get_action( 'auto', $namespace ) } ) {
$c->execute( @{ $auto->[0] } );
return if scalar @{ $c->error };
last unless $c->state;
+ $auto++;
}
# Execute the action or last default
- if ( ( my $action = $c->req->action ) && $c->state ) {
+ my $mkay = $auto ? $c->state ? 1 : 0 : 1;
+ if ( ( my $action = $c->req->action ) && $mkay ) {
if ( my $result = @{ $c->get_action( $action, $default ) }[-1] ) {
$c->execute( @{ $result->[0] } );
}
my $caller = caller(0);
my $namespace = '/';
if ( $command =~ /^\// ) {
- $command =~ /^(.*)\/(\w+)$/;
+ $command =~ /^\/(.*)\/(\w+)$/;
$namespace = $1 || '/';
$command = $2;
}
unless ( @{$results} ) {
my $class = $command;
if ( $class =~ /[^\w\:]/ ) {
- $c->log->debug(qq/Couldn't forward to "$class"/) if $c->debug;
+ my $error = qq/Couldn't forward to "$class"/;
+ $c->error($error);
+ $c->log->debug($error) if $c->debug;
return 0;
}
my $method = shift || 'process';
$results = [ [ [ $class, $code ] ] ];
}
else {
- $c->log->debug(qq/Couldn't forward to "$class->$method"/)
+ my $error = qq/Couldn't forward to "$class->$method"/;
+ $c->error($error);
+ $c->log->debug($error)
if $c->debug;
return 0;
}
elsif ( $attr =~ /^(Regex|Regexp)\((.+)\)$/i ) { $flags{regex} = $2 }
}
+ if ( $flags{private} && ( keys %flags > 1 ) ) {
+ $c->log->debug( 'Bad action definition "'
+ . join( ' ', @{$attrs} )
+ . qq/" for "$namespace->$method"/ )
+ if $c->debug;
+ return;
+ }
return unless keys %flags;
my $parent = $c->tree;
}
}
}
- my $t = Text::ASCIITable->new( { hide_HeadRow => 1, hide_HeadLine => 1 } );
- $t->setCols('Class');
- $t->setColWidth( 'Class', 75, 1 );
- $t->addRow( wrap( $_, 75 ) ) for keys %{ $self->components };
- $self->log->debug( 'Loaded components', $t->draw )
- if ( @{ $t->{tbl_rows} } && $self->debug );
my $actions = $self->actions;
my $privates = Text::ASCIITable->new;
- $privates->setCols( 'Private', 'Class', 'Code' );
- $privates->setColWidth( 'Private', 28, 1 );
- $privates->setColWidth( 'Class', 28, 1 );
- $privates->setColWidth( 'Code', 14, 1 );
+ $privates->setCols( 'Private', 'Class' );
+ $privates->setColWidth( 'Private', 36, 1 );
+ $privates->setColWidth( 'Class', 37, 1 );
my $walker = sub {
my ( $walker, $parent, $prefix ) = @_;
$prefix .= $parent->getNodeValue || '';
my $uid = $parent->getUID;
for my $action ( keys %{ $actions->{private}->{$uid} } ) {
my ( $class, $code ) = @{ $actions->{private}->{$uid}->{$action} };
- $privates->addRow(
- wrap( "$prefix$action", 28 ),
- wrap( $class, 28 ),
- wrap( $code, 14 )
- );
+ $privates->addRow( wrap( "$prefix$action", 36 ),
+ wrap( $class, 37 ) );
}
$walker->( $walker, $_, $prefix ) for $parent->getAllChildren;
};
if ( @{ $privates->{tbl_rows} } && $self->debug );
my $publics = Text::ASCIITable->new;
$publics->setCols( 'Public', 'Private' );
- $publics->setColWidth( 'Public', 37, 1 );
- $publics->setColWidth( 'Private', 36, 1 );
+ $publics->setColWidth( 'Public', 36, 1 );
+ $publics->setColWidth( 'Private', 37, 1 );
for my $plain ( sort keys %{ $actions->{plain} } ) {
my ( $class, $code ) = @{ $actions->{plain}->{$plain} };
- $publics->addRow( wrap( "/$plain", 37 ),
- wrap( $self->actions->{reverse}->{$code} || $code, 36 ) );
+ my $reverse = $self->actions->{reverse}->{$code};
+ $reverse = $reverse ? "/$reverse" : $code;
+ $publics->addRow( wrap( "/$plain", 36 ), wrap( $reverse, 37 ) );
}
$self->log->debug( 'Loaded public actions', $publics->draw )
if ( @{ $publics->{tbl_rows} } && $self->debug );
my $regexes = Text::ASCIITable->new;
$regexes->setCols( 'Regex', 'Private' );
- $regexes->setColWidth( 'Regex', 37, 1 );
- $regexes->setColWidth( 'Private', 36, 1 );
+ $regexes->setColWidth( 'Regex', 36, 1 );
+ $regexes->setColWidth( 'Private', 37, 1 );
for my $regex ( sort keys %{ $actions->{regex} } ) {
my ( $class, $code ) = @{ $actions->{regex}->{$regex} };
- $regexes->addRow( wrap( $regex, 37 ),
- wrap( $self->actions->{reverse}->{$class} || $class, 36 ) );
+ my $reverse = $self->actions->{reverse}->{$code};
+ $reverse = $reverse ? "/$reverse" : $code;
+ $regexes->addRow( wrap( $regex, 36 ), wrap( $reverse, 37 ) );
}
$self->log->debug( 'Loaded regex actions', $regexes->draw )
if ( @{ $regexes->{tbl_rows} } && $self->debug );