package HTML::Widget::Constraint::Range;
use warnings;
use strict;
use base 'HTML::Widget::Constraint';
use Scalar::Util qw(looks_like_number);
__PACKAGE__->mk_accessors(qw/minimum maximum/);
*min = \&minimum;
*max = \&maximum;
=head1 NAME
HTML::Widget::Constraint::Range - Range Constraint
=head1 SYNOPSIS
my $c = $widget->constraint( 'Range', 'foo' );
$c->min(23);
$c->max(30);
=head1 DESCRIPTION
Range Constraint.
=head1 METHODS
=head2 maximum
Arguments: $max_value
=head2 minimum
Arguments: $min_value
=head2 validate
=cut
sub validate {
my ( $self, $value ) = @_;
return 1 if !defined $value || $value eq '';
my $minimum = $self->minimum;
my $maximum = $self->maximum;
my $failed = 0;
$failed++ if !looks_like_number($value);
if ( !$failed && defined $minimum ) {
$failed++ unless ( $value >= $minimum );
}
if ( !$failed && defined $maximum ) {
$failed++ unless ( $value <= $maximum );
}
return !$failed;
}
=head1 AUTHOR
Sebastian Riedel, C
=head1 LICENSE
This library is free software, you can redistribute it and/or modify it under
the same terms as Perl itself.
=cut
1;