Commit | Line | Data |
31a246e4 |
1 | package Tak::Result; |
2 | |
3 | use Moo; |
4 | |
5 | has type => (is => 'ro', required => 1); |
6 | has data => (is => 'ro', required => 1); |
7 | |
77bf1d9b |
8 | sub flatten { $_[0]->type, @{$_[0]->data} } |
9 | |
2791fd73 |
10 | sub is_success { $_[0]->type eq 'success' } |
11 | |
31a246e4 |
12 | sub get { |
13 | my ($self) = @_; |
2791fd73 |
14 | $self->throw unless $self->is_success; |
31a246e4 |
15 | return wantarray ? @{$self->data} : $self->data->[0]; |
16 | } |
17 | |
18 | sub throw { |
19 | my ($self) = @_; |
20 | die $self->exception; |
21 | } |
22 | |
23 | sub exception { |
24 | my ($self) = @_; |
25 | $self->type.': '.join ' ', @{$self->data}; |
26 | } |
27 | |
28 | 1; |