package HTML::FormFu::Filter;
use Moose;
with 'HTML::FormFu::Role::NestedHashUtils',
'HTML::FormFu::Role::HasParent',
'HTML::FormFu::Role::Populate';
use HTML::FormFu::Attribute qw( mk_inherited_accessors );
use HTML::FormFu::ObjectUtil qw(
form name parent nested_name nested_names );
use Carp qw( croak );
has type => ( is => 'rw', traits => ['Chained'] );
has localize_args => ( is => 'rw', traits => ['Chained'] );
sub process {
my ( $self, $result, $params ) = @_;
my $name = $self->nested_name;
my $value = $self->get_nested_hash_value( $params, $name );
my $filtered;
if ( ref $value eq 'ARRAY' ) {
$filtered = [ map { $self->filter( $_, $params ) } @$value ];
}
else {
$filtered = $self->filter( $value, $params );
}
$self->set_nested_hash_value( $params, $name, $filtered );
return;
}
sub clone {
my ($self) = @_;
my %new = %$self;
return bless \%new, ref $self;
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=head1 NAME
HTML::FormFu::Filter - Filter Base Class
=head1 SYNOPSIS
---
elements:
- type: Text
name: foo
filters:
- type: Encode
candidates:
- utf8
- Hebrew
- type: Text
name: bar
filters:
- LowerCase
- Encode
filters:
- TrimEdges
=head1 DESCRIPTION
C and C can be called on any L