HTML::FormFu::Filter::CompoundSprintf - CompoundSprintf filter


HTML-FormFu documentation Contained in the HTML-FormFu distribution.

Index


Code Index:

NAME

Top

HTML::FormFu::Filter::CompoundSprintf - CompoundSprintf filter

SYNOPSIS

Top

    ---
    element:
      - type: Multi
        name: date

        elements:
          - name: day
          - name: month
          - name: year

        filter:
          - type: CompoundSprintf
            sprintf: '%02d-%02d-%04d'

    # get the compound-value

    my $date = $form->param_value('date');

DESCRIPTION

Top

For use with a HTML::FormFu::Element::Multi group of fields.

Uses a sprintf pattern to join the input from several fields into a single value.

METHODS

Top

sprintf

Arguments: $string

sprintf pattern used to join the individually submitted parts. The pattern is passed to the perl-core sprintf function.

field_order

Inherited. See field_order in HTML::FormFu::Filter::_Compound for details.

    ---
    element:
      - type: Multi
        name: date

        elements:
          - name: month
          - name: day
          - name year

        filter:
          - type: CompoundSprintf
            field_order:
              - day
              - month
              - year

AUTHOR

Top

Carl Franks, cfranks@cpan.org

LICENSE

Top

This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.


HTML-FormFu documentation Contained in the HTML-FormFu distribution.

package HTML::FormFu::Filter::CompoundSprintf;
use Moose;
extends 'HTML::FormFu::Filter';

with 'HTML::FormFu::Role::Filter::Compound';

use HTML::FormFu::Constants qw( $EMPTY_STR );
use Carp qw( croak );

has sprintf => ( is => 'rw', traits => ['Chained'] );

sub filter {
    my ( $self, $value ) = @_;

    return if !defined $value || $value eq $EMPTY_STR;

    my $sprintf = $self->sprintf;

    croak 'sprintf pattern required' if !defined $sprintf;

    my @values = $self->_get_values($value);

    $value = CORE::sprintf( $sprintf, @values );

    return $value;
}

__PACKAGE__->meta->make_immutable;

1;

__END__