logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

MooseX::Types::Path::Tiny - Path::Tiny types and coercions for Moose

Author

       David Golden <dagolden@cpan.org>

Caveats

PathvsFilevsDir
       "Path" just ensures you have a Path::Tiny object.

       "File" and "Dir" check the filesystem.  Don't use them unless that's really what you want.

   UsagewithFile::Temp
       Be careful if you pass in a File::Temp object. Because the argument is stringified during coercion into a
       Path::Tiny object, no reference to the original File::Temp argument is held.  Be sure to hold an external
       reference to it to avoid immediate cleanup of the temporary file or directory at the end of the enclosing
       scope.

       A better approach is to use Path::Tiny's  own  "tempfile"  or  "tempdir"  constructors,  which  hold  the
       reference for you.

           Foo->new( filename => Path::Tiny->tempfile );

Contributors

       •   Karen Etheridge <ether@cpan.org>

       •   Toby Inkster <mail@tobyinkster.co.uk>

       •   Demian Riccardi <dde@ornl.gov>

       •   Gregory Oschwald <goschwald@maxmind.com>

Description

       This module provides Path::Tiny types for Moose.  It handles two important types of coercion:

       •   coercing objects with overloaded stringification

       •   coercing to absolute paths

       It also can check to ensure that files or directories exist.

Name

       MooseX::Types::Path::Tiny - Path::Tiny types and coercions for Moose

See Also

       •   Path::Tiny

       •   Moose::Manual::Types

       •   Types::Path::Tiny

Subtypes

       This module uses MooseX::Types to define the following subtypes.

   Path
       "Path"  ensures an attribute is a Path::Tiny object.  Strings and objects with overloaded stringification
       may be coerced.

   AbsPath
       "AbsPath" is a subtype of "Path" (above), but coerces to an absolute path.

   File,AbsFile
       These are just like "Path" and "AbsPath", except they check "-f" to ensure the file  actually  exists  on
       the filesystem.

   Dir,AbsDir
       These  are just like "Path" and "AbsPath", except they check "-d" to ensure the directory actually exists
       on the filesystem.

   Paths,AbsPaths
       These are arrayrefs of "Path" and "AbsPath", and include coercions from arrayrefs of strings.

Support

       Bugs         may        be        submitted        through        the        RT        bug        tracker
       <https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Types-Path-Tiny>                            (or
       bug-MooseX-Types-Path-Tiny@rt.cpan.org <mailto:bug-MooseX-Types-Path-Tiny@rt.cpan.org>).

       There    is    also    a    mailing    list    available    for    users   of   this   distribution,   at
       <http://lists.perl.org/list/moose.html>.

       There is also an irc channel available for users of this  distribution,  at  "#moose"  on  "irc.perl.org"
       <irc://irc.perl.org/#moose>.

       I am also usually active on irc, as 'ether' at "irc.perl.org".

Synopsis

         ### specification of type constraint with coercion

         package Foo;

         use Moose;
         use MooseX::Types::Path::Tiny qw/Path Paths AbsPath/;

         has filename => (
           is => 'ro',
           isa => Path,
           coerce => 1,
         );

         has directory => (
           is => 'ro',
           isa => AbsPath,
           coerce => 1,
         );

         has filenames => (
           is => 'ro',
           isa => Paths,
           coerce => 1,
         );

         ### usage in code

         Foo->new( filename => 'foo.txt' ); # coerced to Path::Tiny
         Foo->new( directory => '.' ); # coerced to path('.')->absolute
         Foo->new( filenames => [qw/bar.txt baz.txt/] ); # coerced to ArrayRef[Path::Tiny]

Version

       version 0.012

See Also