logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Author

       Toby Inkster <tobyink@cpan.org>.

Bugs

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

Description

       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.

   TypesStringLike

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

           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.

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

   Methods
       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)

Disclaimer Of Warranties

       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.

perl v5.40.1                                       2025-05-06                               Types::TypeTiny(3pm)

Name

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

See Also

       Type::Tiny.

Status

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

       The BoolLike type is currently unstable.

See Also