Advertisement
Guest User

Untitled

a guest
Jan 30th, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.50 KB | None | 0 0
  1. package Validator;
  2.  
  3. use Moose;
  4. use namespace::autoclean;
  5. use Data::Verifier;
  6. use MooseX::Types::Email qw/EmailAddress/;
  7. use MooseX::Types::Moose qw/Str Int/;
  8.  
  9. sub build {
  10.     my $dv = Data::Verifier->new(
  11.             filters => [qw/trim/],
  12.             profile => {
  13.                 target => {
  14.                     type       => Str,
  15.                     required   => 1
  16.                 },
  17.                 email => {
  18.                     type       => EmailAddress,
  19.                     required   => 0
  20.                 },
  21.                 id => {
  22.                     type       => Int,
  23.                     required   => 0
  24.                 }
  25.             },
  26.             derived => {
  27.                 data => {
  28.                     required => 1,
  29.                     fields   => [qw/ email id /],
  30.                     deriver  => sub {
  31.                         my ($r) = @_;
  32.                         my $e = $r->get_value('email');
  33.                         my $i = $r->get_value('id');
  34.                         return $i ? $i : $e;
  35.                     }
  36.                 }  
  37.             }
  38.         );
  39.     return $dv;
  40.  
  41. }
  42.  
  43. __PACKAGE__->meta->make_immutable;
  44.  
  45. 1;
  46.  
  47. ## Script
  48. use strict;
  49. use warnings;
  50. use Data::Manager;
  51.  
  52. ## Data Manager
  53. my $dm = Data::Manager->new;
  54. $dm->set_verifier( val => Validator->new->build );
  55.  
  56.  
  57. my $data = {
  58.     target => 'str',
  59.     email => 'teste@domain.com.br',
  60.     id    => undef
  61. };
  62.  
  63. $dm->verify( val => $data );
  64.  
  65. if (!$dm->success) {
  66.     printf("ERROR: %s\n", $_->msgid)
  67.         for(@{ $dm->messages->messages });
  68.     exit 0;
  69. }
  70.  
  71. my $results = $dm->results;
  72. 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