JSV

 view release on metacpan or  search on metacpan

lib/JSV/Result.pm  view on Meta::CPAN

package JSV::Result;

use strict;
use warnings;
use overload
    'bool' => \&to_boolean,
    'eq'   => \=

use Carp;
use Hash::MultiValue;
use Class::Accessor::Lite (
    new => 0,
    rw  => [qw/instance error errors/]
);

sub new {
    my $class = shift;
    my $args = ref $_[0] ? $_[0] : { @_ };

    %$args = (
        errors => [],
        error => "",
        %$args,
    );

    bless $args => $class;
}


sub equals {
    $_[0]->to_boolean == $_[1];
}

sub to_boolean {
    my $self = shift;
    return (($self->errors && scalar @{ $self->errors }) || $self->error) ? 0 : 1;
}

sub get_error {
    my ($self, $pointer) = @_;

    if ( $self->error ) {
        return $self->error;
    }
    elsif ( $self->errors ) {
        if ( $pointer ) {
            return grep { $_->{pointer} eq $pointer } @{ $self->errors };
        }
        else {
            return @{ $self->errors };
        }
    }
}

sub get_error_map {
    my $self = shift;
    return Hash::MultiValue->new(map { $_->{pointer} => $_ } @{ $self->errors });
}

1;

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.587 second using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )