use strict; package HTML::FormFu::Deflator::PathClassFile; $HTML::FormFu::Deflator::PathClassFile::VERSION = '2.07'; # ABSTRACT: Deflator for Path::Class::File objects use Moose; use MooseX::Attribute::Chained; extends 'HTML::FormFu::Deflator'; has relative => ( is => 'rw', traits => ['Chained'] ); has absolute => ( is => 'rw', traits => ['Chained'] ); has basename => ( is => 'rw', traits => ['Chained'] ); sub deflator { my ( $self, $value ) = @_; return $value unless ( ref $value ); # we default to relative(1) $self->relative(1) unless ( $self->absolute || $self->basename || $self->relative ); if ( $self->relative ) { return $value->relative( $self->relative eq "1" ? undef : $self->relative )->stringify; } elsif ( $self->absolute ) { return $value->absolute( $self->absolute eq "1" ? undef : $self->absolute )->stringify; } elsif ( $self->basename ) { return $value->basename; } # fallback, should never happen return $value->stringify; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME HTML::FormFu::Deflator::PathClassFile - Deflator for Path::Class::File objects =head1 VERSION version 2.07 =head1 SYNOPSIS $form->deflator( PathClassFile => 'file' ) ->relative( 'root' ); --- elements: - type: Text deflator: - type: PathClassFile relative: root =head1 DESCRIPTION Deflator for Path::Class::File objects. There are three types of deflation: =over =item relative Set this to 1 to deflate to a relative path. Anything else than 1 specifies the directory to use as the base of relativity - otherwise the current working directory will be used. =item absolute Set this to 1 to deflate to an absolute path. Anything else than 1 specifies the directory to use as the base of relativity - otherwise the current working directory will be used. =item basename Set this to 1 to get the name of the file without the directory portion. =back As you cannot set values for a File element, this deflator will only work on regular form elements. =head1 AUTHOR Moritz Onken, C =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =head1 AUTHOR Carl Franks =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