]> git.vpit.fr Git - perl/scripts/xchat.git/commitdiff
Don't use closures in Xchat::XPI::Events
authorVincent Pit <vince@profvince.com>
Sun, 15 Aug 2010 09:52:29 +0000 (11:52 +0200)
committerVincent Pit <vince@profvince.com>
Sun, 15 Aug 2010 09:52:29 +0000 (11:52 +0200)
Xchat/XPI/Events.pm

index b0211c2bf8927f8d4ede911a6dcfc82df298c5d3..2c753e151e41e9db7b3ada44a97e78300fd10408 100644 (file)
@@ -14,32 +14,32 @@ use constant {
 
 our $VERSION = '0.04';
 
+sub _delay_cb {
+ my ($cb, @args) = @{$_[0]};
+ $cb->(@args);
+ return REMOVE;
+};
+
 sub delay {
  my $d = shift;
  $d = (defined $d) ? int $d : DEFAULT_DELAY;
- return hook_timer $d, sub {
-  my ($cb, $data) = @{$_[0]};
-  &$cb($data);
-  return REMOVE;
- }, { data => \@_ };
+ return hook_timer $d, \&_delay_cb, { data => \@_ };
 }
 
-my %reorder;
+sub _filter_cb {
+ my @args      = @{$_[0]};
+ my ($cb, $to) = @{$_[1]};
+ if ($cb->(@args)) {
+  emit_print $to, @args;
+  return EAT_ALL;
+ } else {
+  return EAT_NONE;
+ }
+}
 
 sub filter {
- return unless @_ == 3;
- not defined and return for @_;
- my ($cb, $to) = @_[1, 2];
- return hook_print $_[0], sub {
-  my @args = @{$_[0]};
-  if ($cb->(@args)) {
-   $reorder{$to}->(@args) if exists $reorder{$to};
-   emit_print $to, @args;
-   return EAT_ALL;
-  } else {
-   return EAT_NONE;
-  }
- }
+ my $from = shift;
+ return hook_print $from, \&_filter_cb, { data => \@_ };
 }
 
 use base qw/Exporter/;