h$66      Safe-Inferred Safe-Inferred5  filepatternNext is a monad which has a series of elements, and can pull off the next one Safe-Inferred7 Safe-Inferred57{ 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-Inferred 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  values as a literal string, or build them up using the operators <.> and  (but be aware that ""  "foo" produces "./foo"). &'()*+,-./0  Safe-Inferred#$&5  filepatternThe result of  9, used to process successive path components of a set of %s. filepatternThe 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 []. 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 .   Safe-Inferred  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"]If 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.  filepatternGet the files below a certain root matching any of the first set of  values, but don't return any files which match any ignore pattern (the final argument). Typically the ignore pattens will end with /**, e.g. .git/**. getDirectoryFilesIgnore "myproject/src" ["**/*.h","**/*.c"] [".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  , and may return less. However, it will obey invariants such as: getDirectoryFilesIgnoreSlow root [x] [] ++ getDirectoryFilesIgnoreSlow root [y] [] == getDirectoryFilesIgnoreSlow root [x,y] [] In contrast   only guarantees that invariant on case-sensitive file systems.   Safe-Inferred#$- filepatternMatch a  against a %. There are two special forms:*< matches part of a path component, excluding any separators.** 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 2 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 . 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 %s in a single operation. Note that the returned matches are not guaranteed to be in any particular order. matchMany [(a, pat)] [(b, path)] == maybeToList (map (a,b,) (match pat path))   3            !"##$%%&'()*+,-..//0123 +45+467(filepattern-0.1.3-9sBxtObeV9qCqEp1Wm0tYpSystem.FilePattern.DirectorySystem.FilePatternSystem.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