# globfilter Portable directory walking with includes and excludes. Motivating example: You want to allow the user to select paths within a project. ```toml include = ["src", "License.txt", "resources/icons/*.svg"] exclude = ["target", "/dist", ".cache", "*.tmp"] ``` When traversing the directory, you can use `GlobDirFilter::from_globs(...)?.match_directory(&relative)` skip directories that never match in `WalkDir`s `filter_entry`. ## Syntax This crate supports the cross-language, restricted glob syntax from [PEP 639](https://packaging.python.org/en/latest/specifications/glob-patterns/): - Alphanumeric characters, underscores (`_`), hyphens (`-`) and dots (`.`) are matched verbatim. - The special glob characters are: - `*`: Matches any number of characters except path separators - `?`: Matches a single character except the path separator - `**`: Matches any number of characters including path separators - `[]`, containing only the verbatim matched characters: Matches a single of the characters contained. Within `[...]`, the hyphen indicates a locale-agnostic range (e.g., `a-z`, order based on Unicode code points). Hyphens at the start or end are matched literally. - The path separator is the forward slash character (`/`). Patterns are relative to the given directory, a leading slash character for absolute paths is not supported. - Parent directory indicators (`..`) are not allowed. These rules mean that matching the backslash (`\`) is forbidden, which avoid collisions with the windows path separator.