repl works again
[scpubgit/Tak.git] / lib / Tak / Result.pm
1 package Tak::Result;
2
3 use Moo;
4
5 has type => (is => 'ro', required => 1);
6 has data => (is => 'ro', required => 1);
7
8 sub flatten { $_[0]->type, @{$_[0]->data} }
9
10 sub is_success { $_[0]->type eq 'success' }
11
12 sub get {
13   my ($self) = @_;
14   $self->throw unless $self->is_success;
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;