DOKK / manpages / debian 12 / libtype-tiny-perl / Types::TypeTiny.3pm.en
Types::TypeTiny(3pm) User Contributed Perl Documentation Types::TypeTiny(3pm)

Types::TypeTiny - type constraints used internally by Type::Tiny

This module is covered by the Type-Tiny stability policy.

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.

  • 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.

These are implemented so that "Types::TypeTiny->meta->get_type($foo)" works, for rough compatibility with a real Type::Library type library.

"meta"
"type_names"
"get_type($name)"
"has_type($name)"
"coercion_names"
"get_coercion($name)"
"has_coercion($name)"

Please report any bugs to <https://github.com/tobyink/p5-type-tiny/issues>.

Type::Tiny.

Toby Inkster <tobyink@cpan.org>.

This software is copyright (c) 2013-2014, 2017-2023 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.

2023-02-01 perl v5.36.0