The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Apache::Voodoo::Validate::signed_decimal;

$VERSION = "3.0200";

use strict;
use warnings;

use base("Apache::Voodoo::Validate::Plugin");

sub config {
	my ($self,$c) = @_;
	my @e;
	if (defined($c->{left})) {
		if ($c->{left} =~ /^\d+$/) {
			$self->{left} = $c->{left};
		}
		else {
			push(@e,"'left' must be positive integer");
		}
	}
	else {
		push(@e,"'left' must be positive integer");
	}

	if (defined($c->{right})) {
		if ($c->{right} =~ /^\d+$/) {
			$self->{right} = $c->{right};
		}
		else {
			push(@e,"'right' must be positive integer");
		}
	}
	else {
		push(@e,"'right' must be positive integer");
	}

	return @e;
}

sub valid {
	my ($self,$v) = @_;

	my $e;
	if ($v =~ /^(\+|-)?(\d*)(?:\.(\d+))?$/) {
		my $l = $2 || 0;
		my $r = $3 || 0;
		$l *= 1;
		$r *= 1;

		if (length($l) > $self->{'left'} ||
			length($r) > $self->{'right'} ) {
			$e='BIG';
		}
	}
	else {
		$e='BAD';
	}
	return $v,$e;
}

1;

################################################################################
# Copyright (c) 2005-2010 Steven Edwards (maverick@smurfbane.org).
# All rights reserved.
#
# You may use and distribute Apache::Voodoo under the terms described in the
# LICENSE file include in this package. The summary is it's a legalese version
# of the Artistic License :)
#
################################################################################