prune with dirEntries

Dan dbdavidson at yahoo.com
Thu Nov 29 17:57:20 PST 2012


On Friday, 30 November 2012 at 01:13:13 UTC, Jonathan M Davis 
wrote:
> On Friday, November 30, 2012 01:24:07 Dan wrote:
>> Is there a way to walk files with std.file.dirEntries such that
>> certain directories are skipped (i.e. how to avoid .git
>> entirely/recursively)?
>
> You can use std.algorithm.filter on its result. Then when it 
> would iterate to
> something which doesn't match filter's predicate, it skips it.
>
> - Jonathan M Davis

That will do the filtering correctly - but what I was hoping was 
to actually prune at the directory level and not drill down to 
the files in of an unwanted directory (e.g. .git). The problem 
with this and what I'm trying to overcome is accessing lots of 
files and directories recursively all of which I want to skip. 
Much like there is a *followSymlink* it would be nice if a 
predicate were accepted to *followDirectory* in general or some 
way to cause that.

---------------

static bool desired(string m) {
   bool unwanted = match(m, _uninterestRe)? true : false;
   writeln("Is unwanted ", m, " ", unwanted);
   return !unwanted;
}
static Regex!(char) _uninterestRe = regex(`\.git\b`);
filter!(desired)(dirEntries(root, SpanMode.depth))) {
...
}


More information about the Digitalmars-d-learn mailing list