From: mathew
Date: 2005-08-25T04:57:55+09:00
Subject: Re: Pathname#walk for traversing path nodes (patch)
David A. Black wrote:
> On Thu, 25 Aug 2005, mathew wrote:
>
>> ES wrote:
>>
>>> The absolute best name would be simply #each (incidentally, looks like
>>> it would be available). That failing, #walk, #traverse or #each_node.
>>
>>
>>
>> I'd like to suggest "descend", because it's really descending into
>> the path provided.
>
>
> The thing is, though, it isn't really descending. The path may not
> even exist. It's just moving from left to right through a bunch of
> tokens, which may or may not correspond to a real filesystem. If it
> were really a full traversal, you'd get:
>
> a
> a/b
> a/b/c
> a/b/c/d
Digging into the archive for the original example:
> Pathname.new('/path/to/some/file.rb').walk {|dir| p dir}
> #
> #
> #
> #
> *plus* whatever else branched off of b, c, and d.
Only if you were doing the entire tree. It's still descent, even if you
only descend one branch.
(Let's not talk about the fact that in the real world branches ascend,
rather than descending... I guess computer scientists plant their trees
upside-down.)
Also, whether the directory structure you're descending through matches
the one on disk doesn't alter the fact that you're descending through a
directory structure.
> whereas what we're talking about here, as I understand it, is:
>
> a
> b
> c
> d
>
> which is much more just a list of components than a recursive traversal.
If that was all we were talking about, it wouldn't need to be a library
method at all, as that's just split('/').each
mathew