NAME
    Mo::utils::Array - Mo array utilities.

SYNOPSIS
     use Mo::utils::Array qw(check_array check_array_object check_array_required);

     check_array($self, $key);
     check_array_object($self, $key, $class);
     check_array_required($self, $key);

DESCRIPTION
    Mo array utilities for checking of data objects.

SUBROUTINES
  "check_array"
     check_array($self, $key);

    *Since version 0.01.*

    Check parameter defined by $key which is reference to array.

    Put error if check isn't ok.

    Returns undef.

  "check_array_object"
     check_array_object($self, $key, $class);

    *Since version 0.01.*

    Check parameter defined by $key which is reference to array with
    instances of some object type ($class).

    Put error if check isn't ok.

    Returns undef.

  "check_array_required"
     check_array_required($self, $key);

    *Since version 0.01.*

    Check parameter defined by $key which is reference to array for at least
    one value inside.

    Put error if check isn't ok.

    Returns undef.

ERRORS
     check_array():
             Parameter '%s' must be a array.
                     Value: %s
                     Reference: %s

     check_array_object():
             Parameter '%s' must be a array.
                     Value: %s
                     Reference: %s
             Parameter '%s' with array must contain '%s' objects.
                     Value: %s
                     Reference: %s

     check_array_required():
             Parameter '%s' is required.
             Parameter '%s' must be a array.
                     Value: %s
                     Reference: %s
             Parameter '%s' with array must have at least one item.

EXAMPLE1
     use strict;
     use warnings;

     use Mo::utils::Array qw(check_array);

     my $self = {
             'key' => ['foo'],
     };
     check_array($self, 'key');

     # Print out.
     print "ok\n";

     # Output:
     # ok

EXAMPLE2
     use strict;
     use warnings;

     use Error::Pure;
     use Mo::utils::Array qw(check_array);

     $Error::Pure::TYPE = 'Error';

     my $self = {
             'key' => 'foo',
     };
     check_array($self, 'key');

     # Print out.
     print "ok\n";

     # Output like:
     # #Error [..Array.pm:?] Parameter 'key' must be a array.

EXAMPLE3
     use strict;
     use warnings;

     use Mo::utils::Array qw(check_array_object);
     use Test::MockObject;

     my $self = {
             'key' => [
                     Test::MockObject->new,
             ],
     };
     check_array_object($self, 'key', 'Test::MockObject');

     # Print out.
     print "ok\n";

     # Output:
     # ok

EXAMPLE4
     use strict;
     use warnings;

     use Error::Pure;
     use Mo::utils::Array qw(check_array_object);

     $Error::Pure::TYPE = 'Error';

     my $self = {
             'key' => [
                     'foo',
             ],
     };
     check_array_object($self, 'key', 'Test::MockObject');

     # Print out.
     print "ok\n";

     # Output like:
     # #Error [..Array.pm:?] Parameter 'key' with array must contain 'Test::MockObject' objects.

EXAMPLE5
     use strict;
     use warnings;

     use Mo::utils::Array qw(check_array_required);

     my $self = {
             'key' => ['value'],
     };
     check_array_required($self, 'key');

     # Print out.
     print "ok\n";

     # Output:
     # ok

EXAMPLE6
     use strict;
     use warnings;

     use Error::Pure;
     use Mo::utils::Array qw(check_array_required);

     $Error::Pure::TYPE = 'Error';

     my $self = {
             'key' => [],
     };
     check_array_required($self, 'key');

     # Print out.
     print "ok\n";

     # Output like:
     # #Error [..Array.pm:?] Parameter 'key' with array must have at least one item.

DEPENDENCIES
    Exporter, Error::Pure, Readonly, Scalar::Util.

SEE ALSO
    Mo  Micro Objects. Mo is less.

    Mo::utils
        Mo utilities.

    Mo::utils::Hash
        Mo hash utilities.

    Mo::utils::Language
        Mo language utilities.

    Mo::utils::CSS
        Mo CSS utilities.

    Wikibase::Datatype::Utils
        Wikibase datatype utilities.

REPOSITORY
    <https://github.com/michal-josef-spacek/Mo-utils-Array>

AUTHOR
    Michal Josef Špaček <mailto:skim@cpan.org>

    <http://skim.cz>

LICENSE AND COPYRIGHT
    © 2025 Michal Josef Špaček

    BSD 2-Clause License

VERSION
    0.01

