Help language development. Donate to The Perl Foundation
An extendable JS like event emitter but way more fun. Can use supplies or channels and is basically just some syntax sugar on already implemented Perl6 features.
Out of the box functionality
Event::Emitter
uses a Supply
in the back end
use Event::Emitter; my Event::Emitter $e .= new; # hey, i work with regex $e.on(/^^ "Some regex"/, -> $data { qw<do something with your $data here>; }); # your own callables to match events my $event = { 'some flag' => 3, 'some other flag' => 5 }; $e.on({ $event<some flag> // Nil eq $*STATE }, -> $data { qw<do something with your $data here>; }); # plain ol strings, just like mom used to make $e.on('some str', -> $data { qw<do something with your $data here>; }); # runs the some str listener $e.emit('some str', @(1 .. 5)); # runs the regex because it matches the regex; $e.emit('Some regex', { conn => IO::Socket::INET }); $e.emit({ 'some flag' => 5 }, { });
Event::Emitter
uses a Channel
in the back end
use Event::Emitter; my Event::Emitter $e .= new(:threaded);
Want to make your own receiver/emitter? Here's a template
use Event::Emitter::Role::Handler; unit class My::Own::Emitter does Event::Emitter::Role::Handler; method on($event, $data) { qw<do your thing>; } method emit($event, $data?) { qw<do your thing here>; }
use Event::Emitter; my $e = Event::Emitter.new(:class<My::Own::Emitter>);
Free for all.