NAME

Mo::utils - Mo utilities.

SYNOPSIS

use Mo::utils qw(check_array_object check_isa check_number check_required);

check_array_object($self, $key, $class, $class_name);
check_isa($self, $key, $class);
check_number($self, $key);
check_number_of_items($self, $list_method, $item_method, $object_name, $item_name);
check_required($self, $key);

DESCRIPTION

Mo utilities for checking of data objects.

SUBROUTINES

check_array_object

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

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

Put error if check isn't ok.

Returns undef.

check_isa

check_isa($self, $key, $class);

Check parameter defined by $key which is instance of $class or no.

Put error if check isn't ok.

Returns undef.

check_number

check_number($self, $key);

Check parameter defined by $key which is number (positive or negative) or no.

Put error if check isn't ok.

Returns undef.

check_number_of_items

check_number_of_items($self, $list_method, $item_method, $object_name, $item_name);

Check number of items. Must be 0 or 1. List items via $list_method and get value via $item_method method. $object_name and $item_name are variables for error output.

Put error if check isn't ok.

Returns undef.

check_required

check_required($self, $key);

Check required parameter defined by $key.

Put error if check isn't ok.

Returns undef.

ERRORS

check_array_object():
        Parameter '%s' must be a array.
        %s isn't '%s' object.

check_isa():
        Parameter '%s' must be a '%s' object.

check_number():
        Parameter '%s' must a number.

check_number_of_items():
        %s for %s '%s' has multiple values.

check_required():
        Parameter '%s' is required.

EXAMPLE1

use strict;
use warnings;

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

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

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE2

use strict;
use warnings;

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

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

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

# Print out.
print "ok\n";

# Output like:
# #Error [..utils.pm:?] Value isn't 'Test::MockObject' object.

EXAMPLE3

use strict;
use warnings;

use Mo::utils qw(check_isa);
use Test::MockObject;

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

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE4

use strict;
use warnings;

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

use Mo::utils qw(check_isa);

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

# Print out.
print "ok\n";

# Output like:
# #Error [...utils.pm:?] Parameter 'key' must be a 'Test::MockObject' object.

EXAMPLE5

use strict;
use warnings;

use Mo::utils qw(check_number);

my $self = {
        'key' => '10',
};
check_number($self, 'key');

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE6

use strict;
use warnings;

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

use Mo::utils qw(check_number);

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

# Print out.
print "ok\n";

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

EXAMPLE7

use strict;
use warnings;

use Mo::utils qw(check_required);

my $self = {
        'key' => 'value',
};
check_required($self, 'key');

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE8

use strict;
use warnings;

use Error::Pure;
use Mo::utils qw(check_required);

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

my $self = {
        'key' => undef,
};
check_required($self, 'key');

# Print out.
print "ok\n";

# Output like:
# #Error [...utils.pm:?] Parameter 'key' is required.

DEPENDENCIES

Exporter, Error::Pure, Readonly.

SEE ALSO

Mo

Micro Objects. Mo is less.

REPOSITORY

https://github.com/michal-josef-spacek/Mo-utils

AUTHOR

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

http://skim.cz

LICENSE AND COPYRIGHT

© Michal Josef Špaček 2020

BSD 2-Clause License

VERSION

0.01