FormValidator::Lite::Constraint::* について

昨日Twitterで、

というのを見て、FormValidator::Lite::Constraint::Mouseというモジュールを作ってみました。

FormValidator::Litのバリデーションルールは、以下のように簡単に書けるのでモノ自体はすぐ作ることができました。

package FormValidator::Lite::Constraint::Foo;
use strict;
use warnings;
use FormValidator::Lite::Constraint;

rule 'Foo' => sub{
    # some check for $_
};

使う場合は

use FormValidator::Lite;
FormValidator::Lite->load_constraints(qw/Foo/);

という感じです。

Constraintモジュールは必ずしもFormValidator::Lite::Constraint::*である必要はなく、

use FormValidator::Lite;
FormValidator::Lite->load_constraints(qw/+MyClass::Constraint::Foo/);

のように先頭に '+' をつければ、任意のモジュールを使うことができます。

FormValidator::Lite::Constraint::Mouse の注意点

使用上の注意点なんですが、FormValidator::Lite->load_constraints()を呼んだ時点で、Mouse::Util::TypeConstraints のレキシカル変数 %TYPE に登録されている型制約しか使用できません。
これは、Mouse::Util::TypeConstraints::list_all_type_constraints()を元にルールを定義しているためです。そのため、組み込みの型制約以外は、FormValidator::Lite->load_constraints()を呼ぶ前にMouseX::Types::*やsubtypeを使用して定義しておく必要があります。

FormValidator::Lite::Constraint::Moose

宗教上の理由でMouseを使えない人のために、Moose版(Any::Moose)も作りました。

https://github.com/hideo55/p5-FormValidator-Lite-Constraint-Moose