Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Validator;
- use Moose;
- use namespace::autoclean;
- use Data::Verifier;
- use MooseX::Types::Email qw/EmailAddress/;
- use MooseX::Types::Moose qw/Str Int/;
- sub build {
- my $dv = Data::Verifier->new(
- filters => [qw/trim/],
- profile => {
- target => {
- type => Str,
- required => 1
- },
- email => {
- type => EmailAddress,
- required => 0
- },
- id => {
- type => Int,
- required => 0
- }
- },
- derived => {
- data => {
- required => 1,
- fields => [qw/ email id /],
- deriver => sub {
- my ($r) = @_;
- my $e = $r->get_value('email');
- my $i = $r->get_value('id');
- return $i ? $i : $e;
- }
- }
- }
- );
- return $dv;
- }
- __PACKAGE__->meta->make_immutable;
- 1;
- ## Script
- use strict;
- use warnings;
- use Data::Manager;
- ## Data Manager
- my $dm = Data::Manager->new;
- $dm->set_verifier( val => Validator->new->build );
- my $data = {
- target => 'str',
- email => 'teste@domain.com.br',
- id => undef
- };
- $dm->verify( val => $data );
- if (!$dm->success) {
- printf("ERROR: %s\n", $_->msgid)
- for(@{ $dm->messages->messages });
- exit 0;
- }
- my $results = $dm->results;
- printf("TARGET: %s - DATA: %s\n", $results->{val}->get_value('target'), $results->{val}->get_value('data'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement