2006年3月11日土曜日

FormValidator::Simple::ProfileManager::YAML

SledgeのValidatorを作るにあたって、FormValidator::Simple用のプロファイルをYAMLで定義するためのモジュールを書いてみました。

FormValidator::Simple::ProfileManager::YAML

まずは以下のようなYAMLファイルを用意します。

>

# sample yaml profile
group1 :
- name
- [ [NOT_BLANK] ]
- email
- [ [NOT_BLANK], [EMAIL_LOOSE] ]
- tel
- [ [NOT_BLANK], [NUMBER_PHONE_JP] ]
- content
- [ [NOT_BLANK] ]

group2 :
subgroup1 :
- userid
- [ [NOT_BLANK]]
- password
- [ [NOT_BLANK]]
- name
- [ [NOT_BLANK] ]
- email
- [ [NOT_BLANK], [EMAIL_LOOSE] ]
subgroup2 :
- tel
- [ [NOT_BLANK], [NUMBER_PHONE_JP] ]
- { zip : [zip1, zip2] }
- [ [ZIP_JP] ]
- address
- [ [NOT_BLANK] ]
<

group1とかsubgroup1というのはプロファイルをグルーピングするのに使います。

使い方は簡単です。まずオブジェクトを作成します。

>

use FormValidator::Simple::ProfileManager::YAML;
my $manager = FormValidator::Simple::ProfileManager::YAML->new('/path/to/profile.yml');
<

デフォルトではYAMLをロードするのにYAMLモジュールを使いますが以下のようにloaderをオプションとして渡すと、YAML::Syckを使うこともできます。

>

my $manager = FormValidator::Simple::ProfileManager::YAML->new(
'/path/to/profile.yml',
{
loader => 'YAML::Syck',
}
);
<

プロファイルを取得するには、get_profileメソッドを使います。パラメータとして、グループ名を渡せば、そのグループに属するプロファイルを取得することができます。
取得したプロファイルはそのままFormValidato::Simpleに渡すせます。

>

# group1のプロファイルを取得
my $profile1 = $manager->get_profile('group1');

# subgroup2のプロファイルを取得
my $profile2 = $manager->get_profile( 'group2', 'subgroup2' );

#取得したgroup1のプロファイルをそのままわたす。
my $result = FormValidator::Simple->check($q , $profile1);

<

0 件のコメント:

コメントを投稿