add $_ aliasing
Matt S Trout [Thu, 13 Jul 2017 18:39:09 +0000 (18:39 +0000)]
lib/Object/Tap.pm
t/01basic.t

index cecdbd2..ccffbcb 100644 (file)
@@ -8,7 +8,11 @@ our $VERSION = '1.000006'; # TRIAL
 
 our @EXPORT = qw($_tap);
 
-our $_tap = sub { my ($obj, $call, @args) = @_; $obj->$call(@args); $obj };
+our $_tap = sub {
+  my ($obj, $call, @args) = @_;
+  $obj->$call(@args) for $obj;
+  $obj
+};
 
 1;
 
@@ -30,6 +34,12 @@ you can instead write -
   
   my $thing = My::Class->new(...)->$_tap(sub { $_[0]->set_foo(1) });
 
+We also alias $_ to $_[0] within the subroutine so:
+
+  my $thing = My::Class->new(...)->$_tap(sub { $_->set_foo(1) });
+
+also works.
+
 To realise why this might be useful, consider instead -
 
   My::App->new(...)->$_tap(...)->run;
index 58d2279..f1b138f 100644 (file)
@@ -14,3 +14,5 @@ is($tapped, 'Foo one', 'subref tap');
 is(Foo->$_tap(bar => 'two'), 'Foo', 'invocant returned');
 
 is($tapped, 'Foo two', 'method name tap');
+
+Foo->$_tap(sub { is($_[0], $_, '$_ aliased to object') });