package Valiant::Filter::Collapse; use Moo; use Valiant::Util 'throw_exception'; with 'Valiant::Filter::Each'; sub normalize_shortcut { my ($class, $arg) = @_; return +{ }; } sub filter_each { my ($self, $class, $attrs, $attribute_name) = @_; my $value = $attrs->{$attribute_name}; return unless defined $value; $value =~ s/[\h\v]+/ /g; return $value; } 1; =head1 NAME Valiant::Filter::Collapse - collapse whitespace =head1 SYNOPSIS package Local::Test::User; use Moo; use Valiant::Filters; has 'name' => (is=>'ro', required=>1); filters name => ( collapse => 1, ); my $user = Local::Test::User->new(name=>'john james napiorkowski'); print $user->name; # 'john james napiorkowski' =head1 DESCRIPTION Given a string collapse all whitespace to a space 'space'. This will not remove whitespace at the start/end of a string, merely collapse it to a single space ( see L) =head1 SEE ALSO L, L, L. =head1 AUTHOR See L =head1 COPYRIGHT & LICENSE See L =cut