Skip to content

Commit

Permalink
rename "method" in event handler to "sub"
Browse files Browse the repository at this point in the history
This is going to be the future of "How do I get a subref as a service?"
In this case, the subref will call the object method.

This change disambiguates the "method" key. It is now back to, in this
instance, being the name of the class constructor. This should allow for
anonymous event handlers.

Fixes #46
  • Loading branch information
preaction committed Mar 8, 2015
1 parent 40d3003 commit 0fd065d
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
7 changes: 3 additions & 4 deletions lib/Beam/Wire.pm
Original file line number Diff line number Diff line change
Expand Up @@ -782,11 +782,9 @@ sub create_service {

for my $listener ( @listeners ) {
my ( $event, $conf ) = @$listener;
# XXX: Make $args prepend arguments to the listener
# XXX: Make $args also resolve refs
my $method = delete $conf->{ $meta{method} };
my $sub_name = delete $conf->{ $meta{sub} };
my ( $listen_svc ) = $self->find_refs( $conf );
$service->on( $event => sub { $listen_svc->$method( @_ ) } );
$service->on( $event => sub { $listen_svc->$sub_name( @_ ) } );
}
}

Expand Down Expand Up @@ -868,6 +866,7 @@ sub get_meta_names {
args => "${prefix}args",
class => "${prefix}class",
extends => "${prefix}extends",
sub => "${prefix}sub",
);
return wantarray ? %meta : \%meta;
}
Expand Down
14 changes: 7 additions & 7 deletions t/14_on_event.t
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ subtest 'single event listener' => sub {
on => {
greet => {
'$ref' => 'listener',
'$method' => 'on_greet',
'$sub' => 'on_greet',
},
},
},
Expand Down Expand Up @@ -42,11 +42,11 @@ subtest 'multiple event listeners' => sub {
greet => [
{
'$ref' => 'listener',
'$method' => 'on_greet',
'$sub' => 'on_greet',
},
{
'$ref' => 'other_listener',
'$method' => 'on_greet',
'$sub' => 'on_greet',
},
],
},
Expand Down Expand Up @@ -78,13 +78,13 @@ subtest 'multiple event listeners' => sub {
{
greet => {
'$ref' => 'listener',
'$method' => 'on_greet',
'$sub' => 'on_greet',
},
},
{
greet => {
'$ref' => 'other_listener',
'$method' => 'on_greet',
'$sub' => 'on_greet',
},
},
],
Expand Down Expand Up @@ -120,7 +120,7 @@ subtest 'anonymous listeners' => sub {
on => {
greet => {
'$class' => 'My::Listener',
'$method' => 'on_greet',
'$sub' => 'on_greet',
},
},
},
Expand All @@ -143,7 +143,7 @@ subtest 'anonymous listeners' => sub {
on => {
greet => {
'$extends' => 'listener',
'$method' => 'on_greet',
'$sub' => 'on_greet',
},
},
},
Expand Down

0 comments on commit 0fd065d

Please sign in to comment.