
interchange-cvs at icdevgroup
Mar 6, 2010, 11:10 PM
Post #1 of 1
(167 views)
Permalink
|
|
[interchange] allow for bounces from Autoload routines
|
|
commit 4ccb37a636724c0de01b785955e3a72d2f1d44d5 Author: Stefan Hornburg (Racke) <racke [at] linuxia> Date: Sun Mar 7 08:06:20 2010 +0100 allow for bounces from Autoload routines added new autoload_inspect SpecialSub to signal skipping of further Autoload processing lib/Vend/Config.pm | 8 +++++++- lib/Vend/Dispatch.pm | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) --- diff --git a/lib/Vend/Config.pm b/lib/Vend/Config.pm index f4a013e..ffda977 100644 --- a/lib/Vend/Config.pm +++ b/lib/Vend/Config.pm @@ -3238,7 +3238,13 @@ my @Cleanups; Autoload => sub { #::logDebug("Doing Autoload dispatch..."); - Vend::Dispatch::run_macro($Vend::Cfg->{Autoload}); + my ($subname, $inspect_sub); + + if ($subname = $Vend::Cfg->{SpecialSub}{autoload_inspect}) { + $inspect_sub = $Vend::Cfg->{Sub}{$subname} || $Global::GlobalSub->{$subname}; + } + + Vend::Dispatch::run_macro($Vend::Cfg->{Autoload}, undef, $inspect_sub); }, CookieLogin => sub { diff --git a/lib/Vend/Dispatch.pm b/lib/Vend/Dispatch.pm index cf982a1..d0b7d29 100644 --- a/lib/Vend/Dispatch.pm +++ b/lib/Vend/Dispatch.pm @@ -1190,7 +1190,8 @@ sub run_macro { my $macro = shift or return; my $content_ref = shift; - + my $inspect_sub = shift; + my @mac; if(ref $macro eq 'ARRAY') { @mac = @$macro; @@ -1203,6 +1204,8 @@ sub run_macro { } for my $m (@mac) { + my $ret; + if ($m =~ /^\w+$/) { my $sub = $Vend::Cfg->{Sub}{$m} || $Global::GlobalSub->{$m} or do { @@ -1217,13 +1220,19 @@ sub run_macro { } next; }; - $sub->($content_ref); + $ret = $sub->($content_ref); } elsif($m =~ /^\w+-\w+$/) { - Vend::Interpolate::tag_profile($m); + $ret = Vend::Interpolate::tag_profile($m); } else { - interpolate_html($m); + $ret = interpolate_html($m); + } + + if ($inspect_sub) { + unless ($inspect_sub->($m, $ret)) { + last; + } } } } @@ -1656,6 +1665,7 @@ EOF for my $routine (@{$Vend::Cfg->{DispatchRoutines}}) { $routine->(); + return if $Vend::Sent; } #show_times("end DispatchRoutines") if $Global::ShowTimes; _______________________________________________ interchange-cvs mailing list interchange-cvs [at] icdevgroup http://www.icdevgroup.org/mailman/listinfo/interchange-cvs
|