Type::Tiny::Class - type constraints based on the "isa" method
Type constraints of the general form { $_->isa("Some::Class") }.
{ $_->isa("Some::Class") }
This package inherits from Type::Tiny; see that for most documentation. Major differences are listed below:
new
When the constructor is called on an instance of Type::Tiny::Class, it passes the call through to the constructor of the class for the constraint. So for example:
my $type = Type::Tiny::Class->new(class => "Foo::Bar"); my $obj = $type->new(hello => "World"); say ref($obj); # prints "Foo::Bar"
This little bit of DWIM was borrowed from MooseX::Types::TypeDecorator, but Type::Tiny doesn't take the idea quite as far.
class
The class for the constraint.
constraint
Unlike Type::Tiny, you cannot pass a constraint coderef to the constructor. Instead rely on the default.
inlined
Unlike Type::Tiny, you cannot pass an inlining coderef to the constructor. Instead rely on the default.
parent
Parent is automatically calculated, and cannot be passed to the constructor.
plus_constructors($source, $method_name)
Much like plus_coercions but adds coercions that go via a constructor. (In fact, this is implemented as a wrapper for plus_coercions.)
plus_coercions
Example:
package MyApp::Minion; use Moose; extends "MyApp::Person"; use Types::Standard qw( HashRef Str ); use Type::Utils qw( class_type ); my $Person = class_type({ class => "MyApp::Person" }); has boss => ( is => "ro", isa => $Person->plus_constructors( HashRef, "new", Str, "_new_from_name", ), coerce => 1, ); package main; MyApp::Minion->new( ..., boss => "Bob", ## via MyApp::Person->_new_from_name ); MyApp::Minion->new( ..., boss => { name => "Bob" }, ## via MyApp::Person->new );
Because coercing HashRef via constructor is a common desire, if you call plus_constructors with no arguments at all, this is the default.
HashRef
plus_constructors
$classtype->plus_constructors(Types::Standard::HashRef, "new") $classtype->plus_constructors() ## identical to above
This is handy for Moose/Mouse/Moo-based classes.
Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=Type-Tiny.
Type::Tiny::Manual.
Type::Tiny.
Moose::Meta::TypeConstraint::Class.
Toby Inkster <tobyink@cpan.org>.
This software is copyright (c) 2013 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.
To install Type::Tiny, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Type::Tiny
CPAN shell
perl -MCPAN -e shell install Type::Tiny
For more information on module installation, please visit the detailed CPAN module installation guide.