Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Interchange: cvs

[interchange] allow for bounces from Autoload routines

 

 

Interchange cvs RSS feed   Index | Next | Previous | View Threaded


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

Interchange cvs RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.