This package inherits from Type::Tiny; see that for most documentation. Major differences are listed below:
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.
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.
$classtype->plus_constructors(HashRef, "new") $classtype->plus_constructors() ## identical to above
This is handy for Moose/Mouse/Moo-based classes.
use Type::Tiny::Class 'HTTP::Tiny';
This will export the following functions into your namespace:
You will also be able to use "HTTPTiny->new(...)" as a shortcut for "HTTP::Tiny->new(...)".
Multiple types can be exported at once:
use Type::Tiny::Class qw( HTTP::Tiny LWP::UserAgent );
Type::Tiny.
Moose::Meta::TypeConstraint::Class.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.