package HTML::FormHandler::Field::Integer; # ABSTRACT: validate an integer value $HTML::FormHandler::Field::Integer::VERSION = '0.40068'; use HTML::FormHandler::Moose; extends 'HTML::FormHandler::Field::Text'; has '+size' => ( default => 8 ); has '+html5_type_attr' => ( default => 'number' ); our $class_messages = { 'integer_needed' => 'Value must be an integer', }; sub get_class_messages { my $self = shift; return { %{ $self->next::method }, %$class_messages, } } apply( [ { transform => sub { my $value = shift; $value =~ s/^\+//; return $value; } }, { check => sub { $_[0] =~ /^-?[0-9]+$/ }, message => sub { my ( $value, $field ) = @_; return $field->get_message('integer_needed'); }, } ] ); __PACKAGE__->meta->make_immutable; use namespace::autoclean; 1; __END__ =pod =encoding UTF-8 =head1 NAME HTML::FormHandler::Field::Integer - validate an integer value =head1 VERSION version 0.40068 =head1 DESCRIPTION This accepts a positive or negative integer. Negative integers may be prefixed with a dash. By default a max of eight digits are accepted. Widget type is 'text'. If form has 'is_html5' flag active it will render instead of type="text" The 'range_start' and 'range_end' attributes may be used to limit valid numbers. =head1 AUTHOR FormHandler Contributors - see HTML::FormHandler =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2017 by Gerda Shank. 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