Take me over?
NAME
SmartMatch::Sugar - Smart match friendly tests.
SYNOPSIS
use SmartMatch::Sugar;
if ( $data ~~ non_empty_array ) {
@$data;
}
if ( $object ~~ inv_isa("Class") {
}
DESCRIPTION
This module provides simple sugary tests that work on the right hand side of a smart match.
EXPORTS
All exports are managed by Sub::Exporter so they can be renamed, aliased, etc.
I suggest using namespace::clean
to remove these subroutines from your namespace.
- any
-
Returns true for any value except code references (this doesn't work because smart match will check for reference equality instead of evaluating).
- none
-
Returns false for any value
- overloaded
-
Returns true if the value is an object with overloads. Doesn't return true for class names which have overloads.
Note that putting an overloaded object in a smart match will cause an error unless
fallback
is true or the object overloads~~
, in which case the matcher sub will not get a chance to work anyway. - stringifies
-
Returns true if the value is an object with string overloading..
- object
-
Returns true if the value is blessed.
- class
-
Returns true if Class::Inspector thinks the value is a loaded class.
- inv_isa $class
-
Returns true if
$object->isa($class)
. Also works on classes.The reason this check is not called just
isa
is because if you import that into an OO class then your object'sisa
method is now bogus.inv
stands for invocant, it's the least sucky name I could muster. - inv_can $method
-
Returns true if
$object->can($method)
.Like
inv_isa
, also returns true for classes that can$method
. - inv_does $role
-
Returns true if
$object->DOES($role)
. Also works for classes. - non_ref
-
Returns true if the item is not a ref, but is defined. Similar to
non_empty_string
but doesn't involve checking the length, or truth. - non_empty_string
-
Checks that a value is defined, not a reference, and has a non zero string length.
- string_length_is $length
-
Check that the string's length is equal to $length.
- array
-
Check that the value is a non blessed array.
- non_empty_array
-
Check that the value is an array with at least one element.
Will not accept objects.
- array_length_is $length
-
Check that the value is an array and that
scalar(@$array) == $length
.Will not accept objects.
- even_sized_array
-
Check that the array is even sized (can be assigned to a hash).
Will not accept objects.
- hash
-
Check that the value is a non blessed hash.
- non_empty_hash
-
Check that the value is a hash with some entries.
Will not accept objects.
- hash_size_is $size
-
Check that the value is a hash with
$size
entries in it.Will not accept objects.
- match &block
-
Will match the value against the block. Unlike a raw subroutine, this will not distribute over arrays and hashes.
VERSION CONTROL
This module is maintained using Darcs. You can get the latest version from http://nothingmuch.woobling.org/code, and use darcs send
to commit changes.
AUTHOR
Yuval Kogman <nothingmuch@woobling.org>
COPYRIGHT
Copyright (c) 2008 Yuval Kogman. All rights reserved
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.