NAME

Mo::utils - Mo utilities.

SYNOPSIS

use Mo::utils qw(check_array check_array_object check_array_required check_bool
        check_code check_isa check_length check_number check_number_of_items
        check_regexp check_required check_string_begin check_strings);

check_array($self, $key);
check_array_object($self, $key, $class, $class_name);
check_array_required($self, $key);
check_bool($self, $key);
check_code($self, $key);
check_isa($self, $key, $class);
check_length($self, $key, $max_length);
check_number($self, $key);
check_number_of_items($self, $list_method, $item_method, $object_name, $item_name);
check_regexp($self, $key, $regexp);
check_required($self, $key);
check_string_begin($self, $key, $string_base);
check_strings($self, $key, $strings_ar);

DESCRIPTION

Mo utilities for checking of data objects.

SUBROUTINES

check_array

check_array($self, $key);

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, $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_array_required

check_array_required($self, $key);

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.

check_bool

check_bool($self, $key);

Check parameter defined by $key if value is bool or not.

Put error if check isn't ok.

Returns undef.

check_code

check_code($self, $key);

Check parameter defined by $key which is code reference or no.

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_length

check_length($self, $key, $max_length);

Check length of value for parameter defined by $key. Maximum length is defined by $max_length.

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 amount of unique items defined by $item_method method value. 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_regexp

check_regexp($self, $key, $regexp);

Check parameter defined by $key via regular expression defined by c<$regexp>.

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.

check_string_begin

check_string_begin($self, $key, $string_base);

Check parameter if it is correct string which begins with base.

Put error if string base doesn't exist. Put error string base isn't present in string on begin.

Returns undef.

check_strings

check_strings($self, $key, $strings_ar);

Check parameter if it is correct string from strings list.

Put error if strings definition is undef or not list of strings. 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
        %s isn't '%s' object.

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

check_bool():
        Parameter '%s' must be a bool (0/1).
                Value: %s

check_code():
        Parameter '%s' must be a code.
                Value: %s

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

check_length():
        Parameter '%s' has length greater than '%s'.
                Value: %s

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

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

check_regexp():
        Parameter '%s' must have defined regexp.
        Parameter '%s' does not match the specified regular expression.
                String: %s
                Regexp: %s

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

check_string_begin():
        Parameter '%s' must have defined string base.
        Parameter '%s' must begin with defined string base.
                String: %s
                String base: %s

check_strings():
        Parameter '%s' must have strings definition.
        Parameter '%s' must have right string definition.
        Parameter '%s' must be one of defined strings.
                String: %s
                Possible strings: %s

EXAMPLE1

use strict;
use warnings;

use Mo::utils 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 qw(check_array);

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

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

# Print out.
print "ok\n";

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

EXAMPLE3

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

EXAMPLE4

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.

EXAMPLE5

use strict;
use warnings;

use Mo::utils 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 qw(check_array_required);

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

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

# Print out.
print "ok\n";

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

EXAMPLE7

use strict;
use warnings;

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

my $self = {
        'key' => 1,
};
check_bool($self, 'key');

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE8

use strict;
use warnings;

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

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

my $self = {
        'key' => 'bad',
};
check_bool($self, 'key');

# Print out.
print "ok\n";

# Output like:
# #Error [..utils.pm:?] Parameter 'key' must be a bool (0/1).

EXAMPLE9

use strict;
use warnings;

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

my $self = {
        'key' => sub {},
};
check_code($self, 'key');

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE10

use strict;
use warnings;

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

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

my $self = {
        'key' => 'bad',
};
check_code($self, 'key');

# Print out.
print "ok\n";

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

EXAMPLE11

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

EXAMPLE12

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.

EXAMPLE13

use strict;
use warnings;

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

use Mo::utils qw(check_length);

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

# Print out.
print "ok\n";

# Output like:
# ok

EXAMPLE14

use strict;
use warnings;

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

use Mo::utils qw(check_length);

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

# Print out.
print "ok\n";

# Output like:
# #Error [...utils.pm:?] Parameter 'key' has length greater than '2'.

EXAMPLE15

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

EXAMPLE16

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.

EXAMPLE17

use strict;
use warnings;

use Test::MockObject;

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

use Mo::utils qw(check_number_of_items);

# Item object #1.
my $item1 = Test::MockObject->new;
$item1->mock('value', sub {
        return 'value1',
});

# Item object #1.
my $item2 = Test::MockObject->new;
$item2->mock('value', sub {
        return 'value2',
});

# Tested object.
my $self = Test::MockObject->new({
        'key' => [],
});
$self->mock('list', sub {
        return [
                $item1,
                $item2,
        ];
});

# Check number of items.
check_number_of_items($self, 'list', 'value', 'Test', 'Item');

# Print out.
print "ok\n";

# Output like:
# ok

EXAMPLE18

use strict;
use warnings;

use Test::MockObject;

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

use Mo::utils qw(check_number_of_items);

# Item object #1.
my $item1 = Test::MockObject->new;
$item1->mock('value', sub {
        return 'value1',
});

# Item object #2.
my $item2 = Test::MockObject->new;
$item2->mock('value', sub {
        return 'value1',
});

# Tested object.
my $self = Test::MockObject->new({
        'key' => [],
});
$self->mock('list', sub {
        return [
                $item1,
                $item2,
        ];
});

# Check number of items.
check_number_of_items($self, 'list', 'value', 'Test', 'Item');

# Print out.
print "ok\n";

# Output like:
# #Error [...utils.pm:?] Test for Item 'value1' has multiple values.

EXAMPLE19

use strict;
use warnings;

use Mo::utils qw(check_regexp);

my $self = {
        'key' => 'https://example.com/1',
};
check_regexp($self, 'key', qr{^https://example\.com/\d+$});

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE20

use strict;
use warnings;

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

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

my $self = {
        'key' => 'https://example.com/bad',
};
check_regexp($self, 'key', qr{^https://example\.com/\d+$});

# Print out.
print "ok\n";

# Output like:
# #Error [...utils.pm:?] Parameter 'key' does not match the specified regular expression.

EXAMPLE21

 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

EXAMPLE22

 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.

EXAMPLE23

use strict;
use warnings;

use Mo::utils qw(check_string_begin);

my $self = {
        'key' => 'http://example.com/foo',
};
check_string_begin($self, 'key', 'http://example.com/');

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE24

use strict;
use warnings;

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

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

my $self = {
        'key' => 'http://example/foo',
};
check_string_begin($self, 'key', 'http://example.com/');

# Print out.
print "ok\n";

# Output like:
# #Error [...utils.pm:?] Parameter 'key' must begin with defined string base.

EXAMPLE25

use strict;
use warnings;

use Mo::utils qw(check_strings);

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

# Print out.
print "ok\n";

# Output:
# ok

EXAMPLE26

use strict;
use warnings;

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

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

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

# Print out.
print "ok\n";

# Output like:
# #Error [...utils.pm:?] Parameter 'key' must be one of defined strings.

DEPENDENCIES

Exporter, Error::Pure, List::Utils, Readonly, Scalar::Util.

SEE ALSO

Mo

Micro Objects. Mo is less.

Mo::utils::Language

Mo language utilities.

Wikibase::Datatype::Utils

Wikibase datatype utilities.

REPOSITORY

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

AUTHOR

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

http://skim.cz

LICENSE AND COPYRIGHT

© 2020-2023 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.18