| Form-Factory documentation | Contained in the Form-Factory distribution. |
Form::Factory::Feature::Control::MatchRegex - Match a control value against a regex
version 0.020
has_control five_char_palindrome => (
control => 'text',
features => {
match_regex => {
regex => qr/(.)(.).\2\1/,
message => 'the %s is not a palindrome',
},
},
);
Checks that the control value matches a regular expression. Returns an error if it does not.
The regular expression to use.
Checks that the control does Form::Factory::Control::Role::ScalarValue.
Runs the regular expression against the current value of the control and reports an error if it does not match.
Andrew Sterling Hanenkamp <hanenkamp@cpan.org>
Copyright 2009 Qubling Software LLC.
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
| Form-Factory documentation | Contained in the Form-Factory distribution. |
package Form::Factory::Feature::Control::MatchRegex; BEGIN { $Form::Factory::Feature::Control::MatchRegex::VERSION = '0.020'; } use Moose; with qw( Form::Factory::Feature Form::Factory::Feature::Role::Check Form::Factory::Feature::Role::Control Form::Factory::Feature::Role::CustomControlMessage ); use Carp ();
has regex => ( is => 'ro', isa => 'RegexpRef', required => 1, );
sub check_control { my ($self, $control) = @_; return if $control->does('Form::Factory::Control::Role::ScalarValue'); Carp::croak("the match_regex feature only works with scalar value controls, not $control"); }
sub check { my $self = shift; my $value = $self->control->current_value; my $regex = $self->regex; unless ($value =~ /$regex/) { $self->control_error("the %s does not match $regex"); $self->result->is_valid(0); } $self->result->is_valid(1) unless $self->result->is_validated; }
1;