MooseX-Contract
+---------+
| WARNING |
+---------+
This module should be considered EXPERIMENTAL and should not be used in
critical applications unless you're willing to deal with all the typical
bugs that young, under-tested software has to offer!
+----------+
| SYNOPSIS |
+----------+
This module provides "Design by Contract" functionality using Moose
method hooks.
For example, in your Moose-built class:
package MyEvenInt;
use MooseX::Contract; # imports Moose for you!
use Moose::Util::TypeConstraints;
my $even_int = subtype 'Int', where { $_ % 2 == 0 };
invariant assert { shift->{value} % 2 == 0 } '$self->{value} must be an even integer';
has value => (
is => 'rw',
isa => $even_int,
required => 1,
default => 0
);
contract 'add'
=> accepts [ $even_int ]
=> returns void;
sub add {
my $self = shift;
my $incr = shift;
$self->{value} += $incr;
return;
}
contract 'get_multiple'
=> accepts ['Int'],
=> returns [$even_int];
sub get_multiple {
return shift->{value} * shift;
}
no MooseX::Contract;
INSTALLATION
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
SUPPORT AND DOCUMENTATION
After installing, you can find documentation for this module with the
perldoc command.
perldoc MooseX::Contract
You can also look for information at:
RT, CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-Contract
AnnoCPAN, Annotated CPAN documentation
http://annocpan.org/dist/MooseX-Contract
CPAN Ratings
http://cpanratings.perl.org/d/MooseX-Contract
Search CPAN
http://search.cpan.org/dist/MooseX-Contract/
COPYRIGHT AND LICENCE
Copyright (C) 2009 Brian Phillips
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.