úÎ!W»Té     SafeFSafe4ÿ filepatternMNext is a monad which has a series of elements, and can pull off the next oneSafeBSafe46© filepattern*Representing either literals, or wildcards filepatternprefix [mid-parts] suffix  filepattern literal match! filepatternGiven a wildcard, and a test string, return the matches. Only return the first (all patterns left-most) valid star matching. "!#$Safeí filepattern-A type synonym for file patterns, containing ** and *%. For the syntax and semantics of  see .Most % values lacking literal . and .. components are suitable as ; values which match only that specific file. On Windows \ is treated as equivalent to /.You can write E values as a literal string, or build them up using the operators <.> and </> (but be aware that "" </> "foo" produces "./foo"). &'()*+,-./0 Safe"#%4P#>  filepatternThe result of  9, used to process successive path components of a set of %s. filepatternVThe files that match at this step. Includes the list that would have been produced by  %, along with the values passed to  -. These results are not necessarily in order. filepattern)Information about the results of calling . See  for details. filepatternApply one component from a % to get a new . filepattern(What we know about the next step values. filepattern.All components not listed will result in dull  values from  , with  being  [] and  being []k. The field is a set - their order is irrelevant but there will be no duplicates in values arising from  . filepattern All calls to  will return  being  with a non-empty .  filepattern8We have no additional information about the output from .  filepatternEfficient matching of a set of s against a set of %s. First call   passing in all the 8s, with a tag for each one. Next call the methods of ", providing the components of the % s in turn.ŒUseful for efficient bulk searching, particularly directory scanning, where you can avoid descending into directories which cannot match.  filepatternLike   but using () as the tag for each .  Safe7Ç  filepattern9Get the files below a certain root that match any of the „ values. Only matches files, not directories. Avoids traversing into directories that it can detect won't have any matches in. 5getDirectoryFiles "myproject/src" ["**/*.h","**/*.c"]HIf there are certain directories/files that should not be explored, use  .Warning€: on case-insensitive file systems certain optimisations can cause surprising results. See the top of the module for details.  filepatternDGet the files below a certain root matching any of the first set of u values, but don't return any files which match any ignore pattern. Typically the ignore pattens will end with /**, e.g. .git/**.Warning€: on case-insensitive file systems certain optimisations can cause surprising results. See the top of the module for details. filepatternLike  › but that the optimisations that may change behaviour on a case-insensitive file system. Note that this function will never return more results then  C, and may return less. However, it will obey invariants such as: ƒgetDirectoryFilesIgnoreSlow root [x] [] ++ getDirectoryFilesIgnoreSlow root [y] [] == getDirectoryFilesIgnoreSlow root [x,y] [] In contrast  B only guarantees that invariant on case-sensitive file systems.  Safe"#,XT] filepatternMatch a  against a %. There are two special forms:*< matches part of a path component, excluding any separators.**D as a path component matches an arbitrary number of path components.Some examples:test.c matches test.c and nothing else.*.c matches all .c$ files in the current directory, so file.c matches, but file.h and  dir/file.c don't.**/*.c matches all .c) files anywhere on the filesystem, so file.c,  dir/file.c, dir1/dir2/file.c and /path/to/file.c all match, but file.h and  dir/file.h don't.dir/*/*# matches all files one level below dir, so dir/one/file.c and dir/two/file.h match, but file.c, one/dir/file.c,  dir/file.h and dir/one/two/file.c don't.!Patterns with constructs such as  foo/../bar will never match normalised %' values, so are unlikely to be correct. filepatternLike , but returns 1$ on if there is no match, otherwise 2C with the list of fragments matching each wildcard. For example: isJust ( p x) == (p  x)  "**/*.c" "test.txt" == Nothing % "**/*.c" "foo.c" == Just ["","foo"] 5 "**/*.c" "bar/baz/foo.c" == Just ["bar/baz/","foo"] On Windows any \% path separators will be replaced by /. filepattern How many * and ** elements are there.  "test.c" == 0  "**/*.c" == 2  filepatternGiven a successful 3, substitute it back in to a pattern with the same T. Raises an error if the number of parts does not match the arity of the pattern. p  x ==>  (fromJust $  p x) p == x ) "**/*.c" ["dir","file"] == "dir/file.c"  filepatternEfficiently match many s against many %ls in a single operation. Note that the returned matches are not guaranteed to be in any particular order. MmatchMany [(a, pat)] [(b, path)] == maybeToList (map (a,b,) (match pat path))   3            !"##$%%&'()*+,-..//0123 +45+467(filepattern-0.1.1-KH5zcJLVHSz4Y9BA6SoSI4System.FilePatternSystem.FilePattern.DirectorySystem.FilePattern.ListBySystem.FilePattern.MonadsSystem.FilePattern.TreeSystem.FilePattern.WildcardSystem.FilePattern.Core?==System.FilePattern.Stepmatch FilePatternStepstepDonestepNext stepApplyStepNextStepOnlyStepEverything StepUnknownstepstep_getDirectoryFilesgetDirectoryFilesIgnoregetDirectoryFilesIgnoreSlowarity substitute matchManyeqListBy stripPrefixBy stripSuffixBy stripInfixByNextgetNextrunNextTreemakeTreeWildcardLiteral wildcardMatchequals wildcardSubst wildcardAritybaseGHC.IOFilePathPatternPath parsePath renderPath parsePatternmkParts GHC.MaybeNothingJust