logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Declare::Constraints::Simple::Library::Hash - Hash Constraints

Author

       Robert 'phaylon' Sedlacek "<phaylon@dunkelheit.at>"

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.

Name

       Declare::Constraints::Simple::Library::Hash - Hash Constraints

See Also

       Declare::Constraints::Simple, Declare::Constraints::Simple::Library

Synopsis

         my $constraint = And(

           # make sure all keys are present
           HasAllKeys( qw(foo bar) ),

           # constraints for the keys
           OnHashKeys( foo => IsInt, bar => HasLength )

         );

See Also