File Coverage

blib/lib/Result/Ok.pm
Criterion Covered Total %
statement 33 34 97.0
branch 10 14 71.4
condition n/a
subroutine 12 13 92.3
pod 0 5 0.0
total 55 66 83.3


line stmt bran cond sub pod time code
1 10     10   229835 use 5.014;
  10         39  
2 10     10   58 use strict;
  10         18  
  10         219  
3 10     10   56 use warnings;
  10         25  
  10         379  
4              
5 10     10   572 use Result::Trait ();
  10         34  
  10         517  
6              
7             package Result::Ok;
8              
9             our $AUTHORITY = 'cpan:TOBYINK';
10             our $VERSION = '0.004';
11              
12 10     10   515 use Role::Tiny::With;
  10         289  
  10         4238  
13             with 'Result::Trait';
14              
15             'overload'->import( 'Result::Trait'->__OVERLOAD_ARGS__( 'ok', '_peek' ) );
16              
17             sub new {
18 71     71 0 250047 my $class = shift;
19              
20 71         366 bless [ !!0, [ @_ ] ], $class;
21             }
22              
23             sub _handled {
24 94 100   94   613 @_ == 1
25             ? $_[0][0]
26             : ( $_[0][0] = $_[1] );
27             }
28              
29             sub _peek {
30 22     22   61 my ( $self ) = @_;
31             wantarray
32 22 100       116 ? @{ $self->[1] }
  5         293  
33             : $self->[1][-1];
34             }
35              
36             sub _peek_err {
37 0     0   0 die;
38             }
39              
40             sub is_err {
41 28 50   28 0 81 @_ == 1
42             or Carp::croak( 'Usage: $result->is_err()' );
43              
44 28         96 !!0;
45             }
46              
47             sub is_ok {
48 13 50   13 0 64 @_ == 1
49             or Carp::croak('Usage: $result->is_ok()');
50              
51 13         57 !!1;
52             }
53              
54             sub unwrap {
55 60     60 0 1143 my ( $self ) = @_;
56 60 50       142 @_ == 1
57             or Carp::croak( 'Usage: $result->unwrap()' );
58              
59 60         207 $self->[0] = !!1;
60              
61             wantarray
62 60 100       278 ? @{ $self->[1] }
  13         580  
63             : $self->[1][-1];
64             }
65              
66             sub unwrap_err {
67 7     7 0 3325 my ( $self ) = @_;
68 7 50       27 @_ == 1
69             or Carp::croak( 'Usage: $result->unwrap_err()' );
70              
71 7         19 $self->[0] = !!1;
72              
73 7         19 Carp::croak( $self->unwrap() );
74             }
75              
76             1;
77              
78             __END__