The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

use strict;
# ABSTRACT: Role for constraints on elements and fields
$HTML::FormFu::Role::ContainsElementsSharedWithField::VERSION = '2.07';
require_class
_merge_hashes
);
use Carp qw( croak );
sub get_error {
my $self = shift;
return if !$self->form->submitted;
my $c = $self->get_errors(@_);
return @$c ? $c->[0] : ();
}
sub _require_constraint {
my ( $self, $type, $arg ) = @_;
croak 'required arguments: $self, $type, \%options' if @_ != 3;
eval { my %x = %$arg };
croak "options argument must be hash-ref" if $@;
my $abs = $type =~ s/^\+//;
my $not = 0;
if ( $type =~ /^Not_(\w+)$/i ) {
$type = $1;
$not = 1;
}
my $class = $type;
if ( !$abs ) {
$class = "HTML::FormFu::Constraint::$class";
}
$type =~ s/^\+//;
require_class($class);
my $constraint = $class->new(
{ type => $type,
not => $not,
parent => $self,
} );
# handle default_args
my $parent = $self->parent;
if ( exists $parent->default_args->{constraints}{$type} ) {
$arg = _merge_hashes( $parent->default_args->{constraints}{$type}, $arg,
);
}
$constraint->populate($arg);
return $constraint;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
HTML::FormFu::Role::ContainsElementsSharedWithField - Role for constraints on elements and fields
=head1 VERSION
version 2.07
=head1 AUTHOR
Carl Franks <cpan@fireartist.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2018 by Carl Franks.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut