| HTML-Widget documentation | Contained in the HTML-Widget distribution. |
HTML::Widget::Constraint::CallbackOnce - CallbackOnce Constraint
my $c = $widget->constraint( 'CallbackOnce', 'foo', 'bar' )->callback(
sub {
my ($foo, $bar) = @_;
return 1 if $foo == $bar * 2;
});
A callback constraint which will only be run once for each call of "process" in HTML::Widget.
Arguments: \&callback
Requires a subroutine reference used for validation, which will be passed a list of values corresponding to the constraint names.
Overrides "process" in HTML::Widget::Constraint to ensure validate is only called once for each call of validate.
Arguments: @names
A list of element names for which an error should be displayed.
If this is not set, the default behaviour is for the error to be displayed for all of the Constraint's named elements.
perform the actual validation.
Carl Franks cfranks@cpan.org
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| HTML-Widget documentation | Contained in the HTML-Widget distribution. |
package HTML::Widget::Constraint::CallbackOnce; use warnings; use strict; use base 'HTML::Widget::Constraint'; __PACKAGE__->mk_accessors(qw/callback/); *cb = \&callback;
sub process { my ( $self, $w, $params ) = @_; my @names = @{ $self->names }; my @values = map { $params->{$_} } @names; my $result = $self->validate(@values); my $results = []; if ( $self->not ? $result : !$result ) { for my $name (@names) { push @$results, HTML::Widget::Error->new( { name => $name, message => $self->mk_message } ); } } return $results; }
sub validate { my ( $self, @values ) = @_; my $callback = $self->callback || sub {1}; return $callback->(@values); }
1;