# phpman > perldoc > Data::FormValidator::ConstraintsFactory

## NAME
    [Data::FormValidator::ConstraintsFactory](https://www.chedong.com/phpMan.php/perldoc/Data%3A%3AFormValidator%3A%3AConstraintsFactory/markdown) - Module to create constraints for [HTML::FormValidator](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFormValidator/markdown).

## DESCRIPTION
    This module contains functions to help generate complex constraints.

    If you are writing new code, take a look at [Data::FormValidator::Constraints::MethodsFactory](https://www.chedong.com/phpMan.php/perldoc/Data%3A%3AFormValidator%3A%3AConstraints%3A%3AMethodsFactory/markdown)
    instead. It's a modern alternative to what's here, offering improved names and syntax.

## SYNOPSIS
        use [Data::FormValidator::ConstraintsFactory](https://www.chedong.com/phpMan.php/perldoc/Data%3A%3AFormValidator%3A%3AConstraintsFactory/markdown) qw( :set :bool );

        constraints => {
        param1 => make_or_constraint(
                make_num_set_constraint( -1, ( 1 .. 10 ) ),
                make_set_constraint( 1, ( 20 .. 30 ) ),
              ),
        province => make_word_set_constraint( 1, "AB QC ON TN NU" ),
        bid  => make_range_constraint( 1, 1, 10 ),
        }

## BOOLEAN CONSTRAINTS
    Those constraints are available by using the ":bool" tag.

  make_not_constraint( $c1 )
    This will create a constraint that will return the negation of the result of constraint $c1.

  make_or_constraint( @constraints )
    This will create a constraint that will return the result of the first constraint that return an
    non false result.

  make_and_constraint( @constraints )
    This will create a constraint that will return the result of the first constraint that return an
    non false result only if all constraints returns a non-false results.

## SET CONSTRAINTS
    Those constraints are available by using the ":set" tag.

  make_set_constraint( $res, @elements )
    This will create a constraint that will return $res if the value is one of the @elements set, or
    the negation of $res otherwise.

    The "eq" operator is used for comparison.

  make_num_set_constraint( $res, @elements )
    This will create a constraint that will return $res if the value is one of the @elements set, or
    the negation of $res otherwise.

    The "==" operator is used for comparison.

  make_word_set_constraint( $res, $set )
    This will create a constraint that will return $res if the value is a word in $set, or the
    negation of $res otherwise.

  make_cmp_set_constraint( $res, $cmp, @elements )
    This will create a constraint that will return $res if the value is one of the @elements set, or
    the negation of $res otherwise.

    $cmp is a function which takes two argument and should return true or false depending if the two
    elements are equal.

## NUMERICAL LOGICAL CONSTRAINTS
    Those constraints are available by using the ":num" tag.

  make_clamp_constraint( $res, $low, $high )
    This will create a constraint that will return $res if the value is between $low and $high
    bounds included or its negation otherwise.

  make_lt_constraint( $res, $bound )
    This will create a constraint that will return $res if the value is lower than $bound, or the
    negation of $res otherwise.

  make_le_constraint( $res, $bound )
    This will create a constraint that will return $res if the value is lower or equal than $bound,
    or the negation of $res otherwise.

  make_gt_constraint( $res, $bound )
    This will create a constraint that will return $res if the value is greater than $bound, or the
    negation of $res otherwise.

  make_ge_constraint( $res, $bound )
    This will create a constraint that will return $res if the value is greater or equal than
    $bound, or the negation of $res otherwise.

## OTHER CONSTRAINTS
  make_length_constraint($max_length)
    This will create a constraint that will return true if the value has a length of less than or
    equal to $max_length

## SEE ALSO
    Data::[FormValidator(3)](https://www.chedong.com/phpMan.php/man/FormValidator/3/markdown)

## AUTHOR
    Author: Francis J. Lacoste <<francis.lacoste@iNsu.COM>> Maintainer: Mark Stosberg
    <<mark@summersault.com>>

## COPYRIGHT
    Copyright (c) 2000 iNsu Innovations Inc. All rights reserved.

    This program is free software; you can redistribute it and/or modify it under the terms as perl
    itself.

