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 <reneeb@cpan.org>
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)