Perl Diver 2.33
Main Environment Variables Perl Default Values Perl Config - Summary Perl Config - Full Installed Modules List Directory uptime Docs

Module Documentation
Details and documentation about a specific module, including version and documentation (if available). Note that while links to perldoc.com and search.cpan.org are provided, the module may be part of a larger distribution. If you reach a File Not Found page on either site, please try the parent module.

Type::Tiny::ConstrainedObject

Name Type::Tiny::ConstrainedObject
Version 1.012004
Located at /usr/share/perl5
File /usr/share/perl5/Type/Tiny/ConstrainedObject.pm
Is Core No
Search CPAN for this module Type::Tiny::ConstrainedObject
Documentation Type::Tiny::ConstrainedObject
Module Details Type::Tiny::ConstrainedObject


NAME

Type::Tiny::ConstrainedObject - shared behavour for Type::Tiny::Class, etc


STATUS

This module is considered experiemental.


DESCRIPTION

Methods

The following methods exist for the Type::Tiny::Class manpage, the Type::Tiny::Role manpage, the Type::Tiny::Duck manpage, and any type constraints that inherit from Object or Overload in the Types::Standard manpage.

These methods will also work for the Type::Tiny::Intersection manpage if at least one of the types in the intersection provides these methods.

These methods will also work for the Type::Tiny::Union manpage if all of the types in the union provide these methods.

stringifies_to($constraint)
Generates a new child type constraint which checks the object's stringification against a constraint. For example:
   my $type  = Type::Tiny::Class->new(class => 'URI');
   my $child = $type->stringifies_to( StrMatch[qr/^http:/] );

   $child->assert_valid( URI->new("http://example.com/";) );

In the above example, $child is a type constraint that checks objects are blessed into (or inherit from) the URI class, and when stringified (e.g. though overloading) the result matches the regular expression qr/^http:/.

$constraint may be a type constraint, something that can be coerced to a type constraint (such as a coderef returning a boolean), a string of Perl code operating on $_, or a reference to a regular expression.

So the following would work:

   my $child = $type->stringifies_to( sub { qr/^http:/ } );
   my $child = $type->stringifies_to(       qr/^http:/   );
   my $child = $type->stringifies_to(       'm/^http:/'  );

   my $child = $type->where('"$_" =~ /^http:/');

numifies_to($constraint)
The same as stringifies_to but checks numification.

The following might be useful:

   use Types::Standard qw(Int Overload);
   my $IntLike = Int | Overload->numifies_to(Int)

with_attribute_values($attr1 => $constraint1, ...)
This is best explained with an example:
   use Types::Standard qw(InstanceOf StrMatch);
   use Types::Common::Numeric qw(IntRange);

   my $person = InstanceOf['Local::Human'];
   my $woman  = $person->with_attribute_values(
      gender   => StrMatch[ qr/^F/i  ],
      age      => IntRange[ 18 => () ],
   );

   $woman->assert_valid($alice);

This assertion will firstly check that $alice is a Local::Human, then check that $alice->gender starts with an ``F'', and lastly check that $alice->age is an integer at least 18.

Again, constraints can be type constraints, coderefs, strings of Perl code, or regular expressions.

Technically the ``attributes'' don't need to be Moo/Moose/Mouse attributes, but any methods which can be called with no parameters and return a scalar.


BUGS

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


SEE ALSO

the Type::Tiny::Manual manpage.

the Type::Tiny manpage.


AUTHOR

Toby Inkster <tobyink@cpan.org>.


COPYRIGHT AND LICENCE

This software is copyright (c) 2019-2021 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.


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 Diver brought to you by ScriptSolutions.com © 1997- 2026