The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package Form::Processor::Field::Text;
{
  $Form::Processor::Field::Text::VERSION = '1.122970';
}
use strict;
use warnings;
use base 'Form::Processor::Field';



use Rose::Object::MakeMethods::Generic (
    scalar => [
        min_length => { interface => 'get_set_init' },
        size       => { interface => 'get_set_init' },
    ],
);

sub init_size       {return 2500}    # new in .20 as a sanity check
sub init_min_length {return 0}



sub init_widget {return 'text'}

sub validate {
    my $field = shift;

    return unless $field->SUPER::validate;

    my $value = $field->input;


    if ( my $size = $field->size ) {

        my $value = $field->input;

        return $field->add_error( 'Please limit to [quant,_1,character]. You submitted [_2]', $size, length $value )
            if length $value > $size;

    }

    # Check for min length
    if ( my $size = $field->min_length ) {

        return $field->add_error( 'Input must be at least [quant,_1,character]. You submitted [_2]', $size, length $value )
            if length $value < $size;

    }

    return 1;

}

# ABSTRACT: A simple text entry field




1;


__END__
=pod

=head1 NAME

Form::Processor::Field::Text - A simple text entry field

=head1 VERSION

version 1.122970

=head1 SYNOPSIS

See L<Form::Processor>

=head1 DESCRIPTION

This is a simple text entry field.

=head2 Widget

Fields can be given a widget type that is used as a hint for
the code that renders the field.

This field's widget type is: "text".

=head2 Subclass

Fields may inherit from other fields.  This field
inherits from: "Field".

=head1 METHODS

=head2 size [integer]

This integer value, if non-zero, defines the max size in characters of the input field.

The recommendation is to not use "Text" fields directly but to create
a subclass for each type of input (e.g. Name) that inherits from this
class and sets additional validation, including size.

As of L<Form::Processor> version .20 (0.04 for this class) the default has
changed from zero to 2500.

=head2 min_length [integer]

This integer value, if non-zero, defines the minimum number of characters that must 
be entered.

Default to zero characters.

=head1 SUPPORT / WARRANTY

L<Form::Processor> is free software and is provided WITHOUT WARRANTY OF ANY KIND.
Users are expected to review software for fitness and usability.

=head1 AUTHOR

Bill Moseley <mods@hank.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Bill Moseley.

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