]> git.vpit.fr Git - perl/scripts/xchat.git/blobdiff - Xchat/XPI/Events.pm
Switch to qw<>
[perl/scripts/xchat.git] / Xchat / XPI / Events.pm
index bb4eac1efe53d9ac6402ef7ab2738cc0b5a5ea11..f387f8ae7e6bc6915caeeda9cf4ea70b1180cc44 100644 (file)
@@ -3,7 +3,7 @@ package Xchat::XPI::Events;
 use strict;
 use warnings;
 
-use Xchat qw/:all/;
+use Xchat qw<:all>;
 
 use lib get_info 'xchatdir';
 use Xchat::XPI;
@@ -12,55 +12,44 @@ use constant {
  DEFAULT_DELAY => 1000
 };
 
-our $VERSION = '0.03';
+our $VERSION = '0.04';
 
-my $ph;
+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/;
+use base qw<Exporter>;
 
 our @EXPORT         = ();
 our %EXPORT_TAGS    = (
- 'funcs'  => [ qw/delay filter/ ],
- 'consts' => [ qw/DEFAULT_DELAY/ ]
+ 'funcs'  => [ qw<delay filter> ],
+ 'consts' => [ qw<DEFAULT_DELAY> ]
 );
 our @EXPORT_OK      = map { @$_ } values %EXPORT_TAGS;
 $EXPORT_TAGS{'all'} = [ @EXPORT_OK ];
 
-$ph = Xchat::XPI->new(
- name   => 'Extended Xchat Perl Interface :: Events',
- tag    => 'XPI::Events',
- desc   => 'More events handlers',
- author => 'Vincent Pit (VPIT)',
- email  => 'perl@profvince.com',
- url    => 'http://www.profvince.com',
-);
-
 1;