NAME Types::Mojo - Types related to Mojo VERSION version 0.05 SYNOPSIS package MyClass; use Moo; use Types::Mojo qw(MojoFile MojoCollection); use Types::Standard qw(Int); has file => ( is => 'rw', isa => MojoFile, coerce => 1 ); has coll => ( is => 'rw', isa => MojoCollection, coerce => 1 ); has ints => ( is => 'rw', isa => MojoCollection[Int] ); 1; In the script use MyClass; my $object = MyClass->new( file => __FILE__ ); # will be coerced into a Mojo::File object say $object->file->move_to( '/path/to/new/location' ); my $object2 = MyClass->new( coll => [qw/a b/] ); $object2->coll->each(sub { say $_; }); TYPES MojoCollection[`a] An object of Mojo::Collection. Can be parameterized with an other Type::Tiny type. has ints => ( is => 'rw', isa => MojoCollection[Int] ); will accept only a Mojo::Collection of integers. MojoFile An object of Mojo::File MojoFileList A MojoCollection of MojoFiles. MojoURL[`a] An object of Mojo::URL. Can be parameterized with a scheme. has http_url => ( is => 'rw', isa => MojoURL["https?"] ); # s? means plain or secure -> http or https has ftp_url => ( is => 'rw', isa => MojoURL["ftp"] ); MojoUserAgent An object of Mojo::UserAgent COERCIONS These coercions are defined. To MojoCollection * Array reference to MojoCollection In a class package Test; use Moo; use Types::Mojo qw(MojoCollection); has 'collection' => ( is => 'ro', isa => MojoCollection, coerce => 1 ); 1; In the script use Test; use v5.22; use feature 'postderef'; my $obj = Test->new( collection => [ 1, 2 ], ); my $sqrs = $obj->collection->map( sub { $_ ** 2 } ); say $_ for $sqrs->to_array->@*; To MojoFile * String to MojoFile In a class package Test; use Moo; use Types::Mojo qw(MojoFile); has 'file' => ( is => 'ro', isa => MojoFile, coerce => 1 ); 1; In the script use Test; use v5.22; my $obj = Test->new( file => __FILE__, ); say $obj->file->slurp; To MojoFileList * MojoCollection of Strings In a class package Test; use Moo; use Types::Mojo qw(MojoFile); has 'files' => ( is => 'ro', isa => MojoFileList, coerce => 1 ); 1; In the script use Test; use v5.22; my $obj = Test->new( files => Mojo::Collection->(__FILE__), ); for my $file ( @{ $obj->files->to_array } ) { say $file->basename; } * Array of Strings In a class package Test; use Moo; use Types::Mojo qw(MojoFile); has 'files' => ( is => 'ro', isa => MojoFileList, coerce => 1 ); 1; In the script use Test; use v5.22; my $obj = Test->new( files => [__FILE__], ); for my $file ( @{ $obj->files->to_array } ) { say $file->basename; } * Array of MojoFile In a class package Test; use Moo; use Types::Mojo qw(MojoFileList); has 'files' => ( is => 'ro', isa => MojoFileList, coerce => 1 ); 1; In the script use Test; use v5.22; my $obj = Test->new( files => [Mojo::File->new(__FILE__)], ); for my $file ( @{ $obj->files->to_array } ) { say $file->basename; } To MojoURL * String to MojoURL In a class package Test; use Moo; use Types::Mojo qw(MojoFile); has 'file' => ( is => 'ro', isa => MojoURL, coerce => 1 ); 1; In the script use Test; use v5.22; my $obj = Test->new( url => 'http://perl-services.de', ); say $obj->url->host; AUTHOR Renee Baecker COPYRIGHT AND LICENSE This software is Copyright (c) 2019 by Renee Baecker. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible)