---
name: "Declare::Constraints::Simple::Library::General"
section: "3pm"
platform: "linux"
package: "libdeclare-constraints-simple-perl"
version: "0.03-1.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Declare::Constraints::Simple::Library::General"
---

# Declare::Constraints::Simple::Library::General(3pm)

General Constraints

## NAME

Declare::Constraints::Simple::Library::General - General Constraints

## SYNOPSIS

```
  # custom error messages
  my $constraint =
    And( Message( 'You need to specify a Value', IsDefined ),
         Message( 'The specified Value is not an Int', IsInt ));
  # build results
  my $valid   = ReturnTrue;
  my $invalid = ReturnFalse('Just because');
```

## DESCRIPTION

This library is meant to contain those constraints and constraint-like elements that apply generally to the whole framework.

## CONSTRAINTS

### Message($message, $constraint)

Overrides the `"message"` set on the result object for failures in `$constraint`. For example:

```
  my $message = 'How hard is it to give me a number?';
  my $constraint = Message($message, IsNumber);
  my $result = $constraint->('duh...');
  print $result->message, "\n";
```

The `"Message"` constraint overrides the error message returned by it's whole subtree, however, the `"Message"` specification nearest to the point of failure will win. So while this

```
  my $constraint = Message( 'Foo',
                            IsArrayRef( Message( 'Bar', IsInt )));
  my $result = $constraint->(['I am not an Integer']);
  print $result->message;
```

will print `"Bar"`, this

```
  my $result = $constraint->('I\'m not even an ArrayRef');
  print $result->message;
```

will output `"Foo"`.

### Scope($name, $constraint)

Executes the passed `$constraint` in a newly generated scope named `$name`.

### SetResult($scope, $name, $constraint)

Stores the result ov an evaluation of `$constraint` in `$scope` under `$name`.

### IsValid($scope, $name)

Returns a true result if the result `$name`, which has to have been stored previously in the scope named `$scope`, was valid.

### ReturnTrue()

Returns a true result.

### ReturnFalse($msg)

Returns a false result containing `$msg` as error message.

## SEE ALSO

Declare::Constraints::Simple, Declare::Constraints::Simple::Library

## AUTHOR

Robert 'phaylon' Sedlacek `"<phaylon@dunkelheit.at>"`

## LICENSE AND COPYRIGHT

This module is free software, you can redistribute it and/or modify it  under the same terms as perl itself.
