package FormValidator::Simple::Data;
use strict;
use Scalar::Util;
use FormValidator::Simple::Exception;
use FormValidator::Simple::Constants;
sub new {
my $class = shift;
my $self = bless { }, $class;
$self->_init(@_);
return $self;
}
sub _init {
my ($self, $input) = @_;
$self->{_records} = {};
my $errmsg = qq/Set input data as a hashref or object that has the method 'param()'./;
if ( Scalar::Util::blessed($input) ) {
unless ( $input->can('param') ) {
FormValidator::Simple::Exception->throw($errmsg);
}
foreach my $key ( $input->param ) {
my @v = $input->param($key);
$self->{_records}{$key} = scalar(@v) > 1 ? \@v : $v[0];
}
}
elsif ( ref $input eq 'HASH' ) {
$self->{_records} = $input;
}
else {
FormValidator::Simple::Exception->throw($errmsg);
}
}
sub has_key {
my ($self, $key) = @_;
return exists $self->{_records}{$key} ? TRUE : FALSE;
}
sub param {
my ($self, $keys) = @_;
my @values = map {
exists $self->{_records}{$_}
? $self->{_records}{$_}
: ''
;
} @$keys;
return wantarray ? @values : \@values;
}
1;
__END__