MooseX-MultiMethods
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
use strict;
use warnings;
use ExtUtils::MakeMaker;
WriteMakefile(
DISTNAME => 'MooseX-MultiMethods',
NAME => 'MooseX::MultiMethods',
AUTHOR => "Florian\ Ragwitz\ \<rafl\@debian\.org\>",
ABSTRACT => "Multi\ Method\ Dispatch\ based\ on\ Moose\ type\ constraints",
VERSION => '0.10',
EXE_FILES => [ qw() ],
(eval { ExtUtils::MakeMaker->VERSION(6.31) } ? (LICENSE => 'perl') : ()),
PREREQ_PM => {
"MooseX::Types::Moose" => '0',
"namespace::autoclean" => '0',
"aliased" => '0',
"MooseX::Method::Signatures" => '0.29',
lib/MooseX/MultiMethods.pm view on Meta::CPAN
package MooseX::MultiMethods;
our $VERSION = '0.10';
# ABSTRACT: Multi Method Dispatch based on Moose type constraints
use Moose;
use Devel::Declare ();
use MooseX::Method::Signatures;
use Sub::Install qw/install_sub/;
use MooseX::Types::Moose qw/HashRef ClassName/;
use aliased 'Devel::Declare::Context::Simple' => 'DDContext';
use aliased 'MooseX::MultiMethods::Meta::Method' => 'MetaMethod';
use namespace::autoclean;
has _dd_context => (
is => 'ro',
isa => DDContext,
lazy => 1,
builder => '_build_dd_context',
handles => qr/.*/,
lib/MooseX/MultiMethods.pm view on Meta::CPAN
});
}
1;
__END__
=pod
=head1 NAME
MooseX::MultiMethods - Multi Method Dispatch based on Moose type constraints
=head1 VERSION
version 0.10
=head1 SYNOPSIS
package Paper; use Moose;
package Scissors; use Moose;
package Rock; use Moose;
package Lizard; use Moose;
package Spock; use Moose;
package Game;
use Moose;
use MooseX::MultiMethods;
multi method play (Paper $x, Rock $y) { 1 }
multi method play (Paper $x, Spock $y) { 1 }
multi method play (Scissors $x, Paper $y) { 1 }
multi method play (Scissors $x, Lizard $y) { 1 }
multi method play (Rock $x, Scissors $y) { 1 }
multi method play (Rock $x, Lizard $y) { 1 }
multi method play (Lizard $x, Paper $y) { 1 }
multi method play (Lizard $x, Spock $y) { 1 }
multi method play (Spock $x, Rock $y) { 1 }
lib/MooseX/MultiMethods/Meta/Method.pm view on Meta::CPAN
package MooseX::MultiMethods::Meta::Method;
our $VERSION = '0.10';
use Carp;
use Moose;
use MooseX::Method::Signatures;
use MooseX::Types::Moose qw/CodeRef/;
use Devel::PartialDump qw/dump/;
use aliased 'MooseX::Types::VariantTable';
use namespace::autoclean;
lib/MooseX/MultiMethods/Meta/Method.pm view on Meta::CPAN
};
}
1;
__END__
=pod
=head1 NAME
MooseX::MultiMethods::Meta::Method
=head1 VERSION
version 0.10
=head1 AUTHOR
Florian Ragwitz <rafl@debian.org>
=head1 COPYRIGHT AND LICENSE
t/conflict.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Test::Exception;
{
package Foo;
use Moose;
use MooseX::MultiMethods;
use MooseX::Types::Moose 'Int';
multi method bar (Int $baz, Int $quux) { }
multi method bar (Int $baz, Int $quux?) { }
}
my $foo = Foo->new;
throws_ok(sub {
$foo->bar(42, 23);
use strict;
use warnings;
use Test::More tests => 1;
use Test::Exception;
{
package Foo;
use Moose;
use MooseX::MultiMethods;
multi method bar (Int $x, Num $y) {}
multi method bar (Num $x, Int $y) {}
}
my $foo = Foo->new;
dies_ok(sub {
$foo->bar(23, 42);
});
t/game-split.t view on Meta::CPAN
{
package Paper; use Moose;
package Scissors; use Moose;
package Rock; use Moose;
package Lizard; use Moose;
package Spock; use Moose;
package Game;
use Moose;
use MooseX::MultiMethods;
multi method play (Paper $x, Rock $y) { 1 }
multi method play (Scissors $x, Paper $y) { 1 }
multi method play (Rock $x, Scissors $y) { 1 }
multi method play (Any $x, Any $y) { 0 }
package Game::Extended;
use Moose;
use MooseX::MultiMethods;
extends 'Game';
multi method play (Paper $x, Spock $y) { 1 }
multi method play (Scissors $x, Lizard $y) { 1 }
multi method play (Rock $x, Lizard $y) { 1 }
multi method play (Lizard $x, Paper $y) { 1 }
multi method play (Lizard $x, Spock $y) { 1 }
multi method play (Spock $x, Rock $y) { 1 }
multi method play (Spock $x, Scissors $y) { 1 }
}
{
package Paper; use Moose;
package Scissors; use Moose;
package Rock; use Moose;
package Lizard; use Moose;
package Spock; use Moose;
package Game;
use Moose;
use MooseX::MultiMethods;
multi method play (Paper $x, Rock $y) { 1 }
multi method play (Paper $x, Spock $y) { 1 }
multi method play (Scissors $x, Paper $y) { 1 }
multi method play (Scissors $x, Lizard $y) { 1 }
multi method play (Rock $x, Scissors $y) { 1 }
multi method play (Rock $x, Lizard $y) { 1 }
multi method play (Lizard $x, Paper $y) { 1 }
multi method play (Lizard $x, Spock $y) { 1 }
multi method play (Spock $x, Rock $y) { 1 }
t/lib/Foo.pm view on Meta::CPAN
package Foo;
our $VERSION = '0.10';
use Moose;
use MooseX::MultiMethods;
use namespace::autoclean;
multi method foo (Int $x) { 'Int' }
multi method foo (Str $x) { 'Str' }
1;
t/lib/MXD.pm view on Meta::CPAN
use MooseX::Declare;
class Scissor;
class Stone;
class Paper;
class ScissorStonePaper {
use MooseX::MultiMethods;
multi method play ( Scissor $x, Paper $y ) { 1 }
multi method play ( Stone $x, Scissor $y ) { 1 }
multi method play ( Paper $x, Stone $y ) { 1 }
multi method play ( Any $x, Any $y ) { 0 }
}
1;
use strict;
use warnings;
use Test::More tests => 3;
{
package MyRole;
use Moose::Role;
use MooseX::MultiMethods;
multi method foo (Int $x) { 'Int' }
multi method foo (Str $x) { 'Str' }
}
{
package MyClass;
use Moose;
with 'MyRole';
}
( run in 0.601 second using v1.01-cache-2.11-cpan-8780591d54d )