API-MailboxOrg
view release on metacpan or search on metacpan
lib/API/MailboxOrg/Types.pm view on Meta::CPAN
$meta->add_type(
name => 'HashRefRestricted',
parent => HashRef,
constraint_generator => sub {
return $meta->get_type('HashRefRestricted') if !@_;
my @keys = @_;
croak "Need a list of valid keys" if !@keys;
my %valid_keys = map { $_ => 1 } @keys;
return sub {
return if ref $_ ne 'HASH';
return 1 if !$_->%*;
for my $key ( keys $_->%* ) {
return if !$valid_keys{$key};
}
return 1;
lib/API/MailboxOrg/Types.pm view on Meta::CPAN
=head1 SYNOPSIS
{
package # private package - do not index
TestClass;
use Moo;
use API::MailboxOrg::Types qw(Boolean HashRefRestricted);
has true_or_false => ( is => 'ro', isa => Boolean, coerce => 1 );
has map => ( is => 'ro', isa => HashRefRestricted[qw(a b)] ); # allow only keys a and b
1;
}
my $obj = TestClass->new(
true_or_false => 1, # 0|1|""|undef|JSON::PP::Boolean object
map => {
a => 1,
b => 1,
# a key 'c' would cause a 'die'
},
);
=head1 TYPES
=head2 HashRefRestricted[`a]
( run in 0.232 second using v1.01-cache-2.11-cpan-49f99fa48dc )