NAME

Complete::Path - Complete path

VERSION

This document describes version 0.251 of Complete::Path (from Perl distribution Complete-Path), released on 2021-02-02.

DESCRIPTION

FUNCTIONS

complete_path

Usage:

 complete_path(%args) -> array

Complete path.

Complete path, for anything path-like. Meant to be used as backend for other functions like Complete::File::complete_file or Complete::Module::complete_module. Provides features like case-insensitive matching, expanding intermediate paths, and case mapping.

Algorithm is to split path into path elements, then list items (using the supplied list_func) and perform filtering (using the supplied filter_func) at every level.

This function is not exported by default, but exportable.

Arguments ('*' denotes required arguments):

  • exclude_dir => bool

  • exclude_leaf => bool

  • filter_func => code

    Provide extra filtering. Code will be given path and should return 1 if the item should be included in the final result or 0 if the item should be excluded.

  • is_dir_func => code

    Function to check whether a path is a "dir".

    Optional. You can provide this function to determine if an item is a "directory" (so its name can be suffixed with path separator). You do not need to do this if you already suffix names of "directories" with path separator in list_func.

    One reason you might want to provide this and not mark "directories" in list_func is when you want to do extra filtering with filter_func. Sometimes you do not want to suffix the names first (example: see complete_file in Complete::File).

  • list_func* => code

    Function to list the content of intermediate "dirs".

    Code will be called with arguments: ($path, $cur_path_elem, $is_intermediate). Code should return an arrayref containing list of elements. "Directories" can be marked by ending the name with the path separator (see path_sep). Or, you can also provide an is_dir_func function that will be consulted after filtering. If an item is a "directory" then its name will be suffixed with a path separator by complete_path().

  • path_sep => str (default: "/")

  • recurse => bool

  • recurse_matching => str (default: "level-by-level")

  • starting_path* => str (default: "")

  • word* => str (default: "")

    Word to complete.

Return value: (array)

ENVIRONMENT

COMPLETE_PATH_TRACE => bool

If set to true, will produce more log statements for debugging.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Complete-Path.

SOURCE

Source repository is at https://github.com/perlancar/perl-Complete-Path.

BUGS

Please report any bugs or feature requests on the bugtracker website https://github.com/perlancar/perl-Complete-Path/issues

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

SEE ALSO

Complete

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021, 2017, 2016, 2015, 2014 by perlancar@cpan.org.

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