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/;
our @EXPORT_OK = map { @$_ } values %EXPORT_TAGS;
$EXPORT_TAGS{'all'} = [ @EXPORT_OK ];
-$ph = new Xchat::XPI 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;