API-MailboxOrg
view release on metacpan or search on metacpan
lib/API/MailboxOrg/Types.pm view on Meta::CPAN
use Carp;
use JSON::PP;
use Scalar::Util qw(blessed);
our $VERSION = '1.0.2'; # VERSION
my $meta = __PACKAGE__->meta;
$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 {
lib/API/MailboxOrg/Types.pm view on Meta::CPAN
return 1 if !$_->%*;
for my $key ( keys $_->%* ) {
return if !$valid_keys{$key};
}
return 1;
};
},
coercion_generator => sub {
my ($parent, $child, $param) = @_;
return $parent->coercion;
},
#inline_generator => sub {},
#deep_explanation => sub {},
);
$meta->add_type(
name => 'Boolean',
parent => InstanceOf['JSON::PP::Boolean'],
constraint_generator => sub {
return $meta->get_type('Boolean') if !@_;
return sub {
return if ! ( blessed $_ and $_->isa('JSON::PP::Boolean') );
return 1;
};
},
coercion_generator => sub {
my ($parent, $child, $param) = @_;
return $parent->coercion;
},
);
coerce Boolean,
from Bool,
via {
my $new = $_ ? $JSON::PP::true : $JSON::PP::false;
$new;
}
;
( run in 0.237 second using v1.01-cache-2.11-cpan-4d50c553e7e )