The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Path::List::Rule - Path::Iterator::Rule on an list of paths

VERSION

version 0.02

SYNOPSIS

  use Path::List::Rule;

  my $rule = Path::List::Rule->new([
    qw(
        Monkey/Plugin/Bonobo.pm
        Monkey/Plugin/Mandrill.pm
        Monkey/Plugin/Bonobo/Utilities.pm
        Monkey/See/Monkey/Do/
      );
  ]);

  $rule->clone->perl_module->all( 'Monkey' );
  # returns
  #   Monkey/Plugin/Bonobo.pm
  #   Monkey/Plugin/Mandrill.pm
  #   Monkey/Plugin/Bonobo/Utilities.pm

  $rule->clone->dirs->all( 'Monkey' );
  # returns
  #   Monkey
  #   Monkey/See
  #   Monkey/See/Monkey
  #   Monkey/See/Monkey/Do
  #   Monkey/Plugin
  #   Monkey/Plugin/Bonobo

DESCRIPTION

Path::List::Rule is a subclass of Path::Iterator::Rule which uses a list of paths (passed to the constructor) as a proxy for a filesystem.

The list of paths doesn't contain any metadata to allow Path::List::Rule to distinguish between directories and files, so it does its best:

  1. If a path is used as a component in another path, it's a directory.

  2. If it ends with /, it's a directory.

  3. Otherwise it's a file.

Path:List::Rule objects behave just like Path::Iterator::Rule objects, except that methods which would ordinarily return paths as strings return them as "Path::List::Rule::Entry" objects instead.

Path::List::Rule::Entry

These objects overload the stringification operator to provide the initial path. (A stringify method is also available).

They also respond to the standard Perl file test operators (e.g. -f, -d). The following operators are supported; all others will result in a thrown exception.

-e

True if the object represents an entry found in the paths passed to the Path::List::Rule constructor.

-l

Always returns false.

-r

Always returns true.

-d

Returns true if the object represents a directory found in the paths passed to the Path::List::Rule constructor.

-f

Returns true if the object represents a file found in the paths passed to the Path::List::Rule constructor.

Note! This minimal set of file operations significantly limits the Path::Iterator::Rule tests which may be used.

Methods

is_dir

Returns true if the object represents a directory found in the paths passed to the Path::List::Rule constructor.

is_file

Returns true if the object represents a file found in the paths passed to the Path::List::Rule constructor.

exists

Returns true if the object represents a entry found in the paths passed to the Path::List::Rule constructor.

stringify

Return the path as a string.

SUPPORT

Bugs

Please report any bugs or feature requests to bug-path-list-rule@rt.cpan.org or through the web interface at: https://rt.cpan.org/Public/Dist/Display.html?Name=Path-List-Rule

Source

Source is available at

  https://gitlab.com/djerius/path-list-rule

and may be cloned from

  https://gitlab.com/djerius/path-list-rule.git

SEE ALSO

Please see those modules/websites for more information related to this module.

AUTHOR

Diab Jerius <djerius@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2022 by Smithsonian Astrophysical Observatory.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.