Tripletail::Validator::FilterFactory - Tripletail::Validator 内部クラス


Tripletail documentation Contained in the Tripletail distribution.

Index


Code Index:

NAME

Top

Tripletail::Validator::FilterFactory - Tripletail::Validator 内部クラス

DESCRIPTION

Top

Tripletail::Validator 参照

METHODS

getFilter

Tripletail::Validator 参照

AUTHOR INFORMATION

Top

Copyright 2006 YMIRLINK Inc.

This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself

このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。

Address bug reports and comments to: tl@tripletail.jp

HP : http://tripletail.jp/


Tripletail documentation Contained in the Tripletail distribution.

# -----------------------------------------------------------------------------
# Tripletail::Validator::FilterFactory - Filterインスタンスの生成
# -----------------------------------------------------------------------------
package Tripletail::Validator::FilterFactory;
use strict;
use warnings;
use UNIVERSAL qw( isa );

use Tripletail;

use Tripletail::Validator::Filter;

my $filterCache = {};
my $userFilters = do {
	my $userFilters = {};

	my $ini     = $TL->INI();
	my @filters = $ini->getKeys('Validator');

	foreach my $filter (@filters) {
		eval 'use ' . $ini->get( Validator => $filter );
		if ( !$@
			&& $ini->get( Validator => $filter )
			->isa('Tripletail::Validator::Filter') )
		{
			$userFilters->{$filter} = $ini->get( Validator => $filter );
		}
	}

	$userFilters;
};

1;

#---------------------------------- 一般
sub getFilter {
	my $filter = shift;

	if ( !defined( $filterCache->{$filter} ) ) {
		eval qq{\$filterCache->{$filter} = new Tripletail::Validator::Filter::$filter};
		if ($@) {
			if ( defined( $userFilters->{$filter} ) ) {
				eval qq{\$filterCache->{$filter} = new $userFilters->{$filter}};
			}
			if ($@) {
				die qq{Filter [$filter] not found.};
			}
		}
	}
	return $filterCache->{$filter};
}

__END__