package FormValidator::Simple::Result;
use strict;
use base qw/Class::Accessor::Fast/;
use FormValidator::Simple::Constants;
use FormValidator::Simple::Exception;
use Tie::IxHash;
__PACKAGE__->mk_accessors(qw/name constraints data is_blank/);
sub new {
my $class = shift;
my $self = bless { }, $class;
$self->_init(@_);
return $self;
}
sub _init {
my ($self, $name) = @_;
my %constraints = ();
tie (%constraints, 'Tie::IxHash');
$self->name($name);
$self->constraints(\%constraints);
$self->data(q{});
$self->is_blank( FALSE );
}
sub set {
my ($self, $constraint, $result) = @_;
$self->constraints->{$constraint} = $result;
}
sub is_valid {
my $self = shift;
return FALSE if $self->is_blank;
foreach my $result ( values %{ $self->constraints } ) {
return FALSE unless $result;
}
return TRUE;
}
sub is_invalid {
my $self = shift;
return FALSE if $self->is_blank;
foreach my $result ( values %{ $self->constraints } ) {
return TRUE unless $result;
}
return FALSE;
}
sub is_valid_for {
my ($self, $constraint) = @_;
return TRUE unless exists $self->constraints->{$constraint};
return $self->constraints->{$constraint} ? TRUE : FALSE;
}
sub is_invalid_for {
my ($self, $constraint) = @_;
return FALSE unless exists $self->constraints->{$constraint};
return $self->constraints->{$constraint} ? FALSE : TRUE;
}
1;
__END__