| blib/lib/Method/Cascade.pm | |||
|---|---|---|---|
| Criterion | Covered | Total | % |
| statement | 16 | 16 | 100.0 |
| branch | n/a | ||
| condition | n/a | ||
| subroutine | 5 | 5 | 100.0 |
| pod | 0 | 1 | 0.0 |
| total | 21 | 22 | 95.4 |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | package Method::Cascade; | ||||||
| 2 | |||||||
| 3 | 1 | 1 | 27527 | use strict; | |||
| 1 | 2 | ||||||
| 1 | 90 | ||||||
| 4 | |||||||
| 5 | our $VERSION = '0.101'; | ||||||
| 6 | |||||||
| 7 | require Exporter; | ||||||
| 8 | 1 | 1 | 5 | use base 'Exporter'; | |||
| 1 | 1 | ||||||
| 1 | 145 | ||||||
| 9 | our @EXPORT = qw(cascade); | ||||||
| 10 | |||||||
| 11 | |||||||
| 12 | sub cascade { | ||||||
| 13 | 3 | 3 | 0 | 23 | my $wrapped = shift; | ||
| 14 | 3 | 30 | return bless { w => $wrapped, }, 'Method::Cascade::Wrapper'; | ||||
| 15 | } | ||||||
| 16 | |||||||
| 17 | |||||||
| 18 | package Method::Cascade::Wrapper; | ||||||
| 19 | |||||||
| 20 | 1 | 1 | 4 | use strict; | |||
| 1 | 16 | ||||||
| 1 | 101 | ||||||
| 21 | |||||||
| 22 | our $AUTOLOAD; | ||||||
| 23 | |||||||
| 24 | sub AUTOLOAD { | ||||||
| 25 | 6 | 6 | 9 | my $self = shift; | |||
| 26 | |||||||
| 27 | 6 | 11 | my $method = $AUTOLOAD; | ||||
| 28 | 6 | 24 | $method =~ s/.*://; | ||||
| 29 | |||||||
| 30 | 6 | 26 | $self->{w}->$method(@_); | ||||
| 31 | |||||||
| 32 | 6 | 38 | return $self; | ||||
| 33 | } | ||||||
| 34 | |||||||
| 35 | 1; | ||||||
| 36 | |||||||
| 37 | |||||||
| 38 | __END__ |