Data-DynamicValidator
view release on metacpan or search on metacpan
lib/Data/DynamicValidator.pm view on Meta::CPAN
package Data::DynamicValidator;
#ABSTRACT: JPointer-like and Perl union for flexible perl data structures validation
$Data::DynamicValidator::VERSION = '0.05';
use strict;
use warnings;
use Carp;
use Devel::LexAlias qw(lexalias);
use PadWalker qw(peek_sub);
use Scalar::Util qw/looks_like_number/;
use Storable qw(dclone);
use aliased qw/Data::DynamicValidator::Error/;
use aliased qw/Data::DynamicValidator::Filter/;
use aliased qw/Data::DynamicValidator::Label/;
use aliased qw/Data::DynamicValidator::Path/;
use overload
fallback => 1,
'&{}' => sub {
my $self = shift;
return sub { $self->validate(@_) }
};
use parent qw/Exporter/;
our @EXPORT_OK = qw/validator/;
use constant DEBUG => $ENV{DATA_DYNAMICVALIDATOR_DEBUG} || 0;
sub validator {
return Data::DynamicValidator->new(@_);
}
sub new {
my ($class, $data) = @_;
my $self = {
_data => $data,
_errors => [],
_bases => [],
};
return bless $self => $class;
}
sub validate {
my ($self, %args) = @_;
my $on = $args{on };
my $should = $args{should };
my $because = $args{because};
my $each = $args{each };
croak("Wrong arguments: 'on', 'should', 'because' should be specified")
if(!$on || !$should || !$because);
warn "-- validating : $on \n" if DEBUG;
my $errors = $self->{_errors};
my $selection_results;
if ( !@$errors ) {
my $success;
my $current_base = $self->current_base;
( run in 1.019 second using v1.01-cache-2.11-cpan-39bf76dae61 )