Types::TypeTiny - type constraints used internally by
Type::Tiny
This module is covered by the Type-Tiny stability policy.
The BoolLike type is currently unstable.
Dogfooding.
This isn't a real Type::Library-based type library; that would
involve too much circularity. But it exports some type constraints which,
while designed for use within Type::Tiny, may be more generally useful.
- StringLike
Accepts strings and objects overloading stringification.
- BoolLike
Accepts undef, "", 0, 1; accepts any blessed object
overloading "bool"; accepts any blessed object overloading
"0+" to return 0 or 1. (Needs to actually call the overloaded
operation to check that.) Also accepts any object that inherits from
"boolean" or reports that as a role
("DOES").
Warning: an object which overloads "0+" without also
turning on overload fallbacks may actually be useless as a practical
boolean. But some common objects such as JSON::PP's booleans overload
"0+" instead of overloading "bool" (thankfully with
fallbacks enabled!) so we do need to support this.
The intention of this type is to be a version of Bool
which also accepts common boolean objects such as JSON::PP::Boolean. It
is currently unstable and the exact definition of the type may change to
better implement that intended functionality.
- HashLike[`a]
Accepts hashrefs and objects overloading hashification.
Since Types::TypeTiny 1.012, may be parameterized with another
type constraint like HashLike[Int].
- ArrayLike[`a]
Accepts arrayrefs and objects overloading arrayfication.
Since Types::TypeTiny 1.012, may be parameterized with another
type constraint like ArrayLike[Int].
- CodeLike
Accepts coderefs and objects overloading codification.
- TypeTiny
Accepts blessed Type::Tiny objects.
- _ForeignTypeConstraint
Any reference which to_TypeTiny recognizes as something that
can be coerced to a Type::Tiny object.
Yes, the underscore is included.
- to_TypeTiny($constraint)
- Promotes (or "demotes" if you prefer) a "foreign" type
constraint to a Type::Tiny object. Can handle:
- Moose types (including Moose::Meta::TypeConstraint objects and
MooseX::Types::TypeDecorator objects).
- Mouse types (including Mouse::Meta::TypeConstraint objects).
- Validation::Class and Validation::Class::Simple objects.
- Types built using Type::Library::Compiler.
- Any object which provides "check" and
"get_message" methods. (This includes
Specio and Type::Nano types.) If the object provides
"has_coercion" and coerce methods, these
will be used to handle quoting. If the object provides
"can_be_inlined" and
"inline_check" methods, these will be
used to handling inlining. If the object provides a
"name" method, this will be assumed to
return the type name.
- Coderefs (but not blessed coderefs or objects overloading
"&{}" unless they provide the
methods described above!) Coderefs are expected to return true iff
$_ passes the constraint. If
$_ fails the type constraint, they may either
return false, or die with a helpful error message.
- Sub::Quote-enabled coderefs. These are handled the same way as above, but
Type::Tiny will consult Sub::Quote to determine if they can be
inlined.
Please report any bugs to
<https://github.com/tobyink/p5-type-tiny/issues>.
Toby Inkster <tobyink@cpan.org>.
This software is copyright (c) 2013-2014, 2017-2025 by Toby
Inkster.
This is free software; you can redistribute it and/or modify it
under the same terms as the Perl 5 programming language system itself.
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.