commercials aside.
Really interested in knowing of other ways of doing this.
possibly more concise?
here is a rewritten or standalon-ifizied example from the audio
file loader class I mentioned in the previous post
________________________
(
var initpath = "~/Desktop";
var initPathDepthCount = 0;
var depth = 0; // set how deep you want to go
~acceptedItems = Set.new();
~rejectedItems = Set.new();
// protection against setting an initpath ending with / or // etc
while({initpath.endsWith("/")}, {"removed /".postln; initpath =
initpath[..initpath.size-2]});
// if init path ends with $/ it will break the depth control
// count depth in initpath
PathName(initpath).pathOnly.do{ | char |
if (char == $/, {initPathDepthCount = initPathDepthCount +
1;})
};
// add this to depth
depth = depth + initPathDepthCount;
// do for all files and check depth guard
PathName(initpath).filesDo{ | item |
var depthCounter = 0;
var depthGuard;
item.pathOnly.do{ | char |
// linux / windows \\
if (char == ($/) || (char == ($\\)), {
if (depthCounter <= depth, {
depthGuard = false;
depthCounter = depthCounter+1;
}, {
depthGuard = true;
});
})
};
if (depthGuard == false, {
~acceptedItems.add(item);
}, {
~rejectedItems.add(item)
});
};
~acceptedItems.do{|item|
"accepted\n\t -> %\n".format(item.fileName).postln;
};
~rejectedItems.do{|item|
"rejected\n\t -> %\n".format(item.fileName).postln;
};
"number of accepted files %".format(~acceptedItems.size).postln;
"number of rejected files %".format(~rejectedItems.size).postln;
~acceptedItems.clear;
~rejectedItems.clear;
"".postln;
)
___________________________________
A possible not so optimized or poorly written 😁
depth control is implemented in my Convenience class.
Drag and drop any folder and Convenience.crawl
will go into this path and load all audiofiles in its way. Depth
control (from folder into folders into folders etc) is set by an
integer.
It works really well, but better ways or other
ways of doing this is highly appreciated.
Maybe implemented in PathName as the OP hints at?
na~
Den 9. dec. 2019, fra 14.54,
f@xxxxxxxxxxxxxxxxxxx skrev:
the .filesDo method implements recursion (check
the sourcecode).
will that do or do you need to stop at a
certain depth?
(
var myPath;
myPath = PathName.new("~/quarks".standardizePath);
myPath.filesDo{|afile| afile.postln};
)
_f
Hey SC Users,
Is there a typical method or approach
for searching the folders within folders, within a
pathMatch convention?
--
Venlig hilsen,
Niklas Adam
adam@xxxxxxxxxx
niklasadam.oddodd.org
Leveringsadresse: Ullevålsveien 111 B, 0359 Oslo
niklas@xxxxxxxxxxxxxxxxxx
verdensteatret.com
Besøks-/leveringsadresse: Verkseier Furulunds vei 22, 0668 Oslo
Fakturaadresse: Verdensteatret, Marselisgt 27, 0551 Oslo
Orgnr: 975 600 874