NAME
Declare::Constraints::Simple::Library::Hash - Hash Constraints
SYNOPSIS
my $constraint = And(
# make sure all keys are present
HasAllKeys( qw(foo bar) ),
# constraints for the keys
OnHashKeys( foo => IsInt, bar => HasLength )
);
DESCRIPTION
This module contains all constraints that can be applied to hash references.
HasAllKeys(@keys)
The value has to be a hashref, and contain all keys listed in @keys
to pass this constraint.
The stack or path part of HasAllKeys
is HasAllKeys[$key]
where $key
is the missing key.
OnHashKeys(key => $constraint, key => $constraint, ...)
This allows you to pass a constraint for each specific key in a hash reference. If a specified key is not in the validated hash reference, the validation for this key is not done. To make a key a requirement, use HasAllKeys(@keys) above in combination with this, e.g. like:
And( HasAllKeys( qw(foo bar baz) )
OnHashKeys( foo => IsInt,
bar => Matches(qr/bar/),
baz => IsArrayRef( HasLength )));
Also, as you might see, you don't have to check for IsHashRef
validity here. The hash constraints are already doing that by themselves.
The stack or path part of OnHashKeys
looks like OnHashKeys[$key]
where $key
is the key of the failing value.
SEE ALSO
Declare::Constraints::Simple, Declare::Constraints::Simple::Library
AUTHOR
Robert 'phaylon' Sedlacek <phaylon@dunkelheit.at>
LICENSE AND COPYRIGHT
This module is free software, you can redistribute it and/or modify it under the same terms as perl itself.