{
package Constraint;
- use strict;
- use warnings;
use Moose::Role;
has 'value' => (isa => 'Num', is => 'ro');
sub error_message { confess "Abstract method!" }
package Constraint::OnLength;
- use strict;
- use warnings;
use Moose::Role;
has 'units' => (isa => 'Str', is => 'ro');
{
package Constraint::AtLeast;
- use strict;
- use warnings;
use Moose;
with 'Constraint';
sub error_message { 'must be at least ' . (shift)->value; }
package Constraint::NoMoreThan;
- use strict;
- use warnings;
use Moose;
with 'Constraint';
sub error_message { 'must be no more than ' . (shift)->value; }
package Constraint::LengthNoMoreThan;
- use strict;
- use warnings;
use Moose;
extends 'Constraint::NoMoreThan';
with 'Constraint::OnLength';
package Constraint::LengthAtLeast;
- use strict;
- use warnings;
use Moose;
extends 'Constraint::AtLeast';