From: Paul van Tilburg Date: 2005-08-25T02:08:44+09:00 Subject: Re: Pathname#walk for traversing path nodes (patch) On Thu, Aug 25, 2005 at 01:00:24AM +0900, 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 case where the path contains ".." is exceptional; I > imagine most real uses of the method won't be on ".." paths. And even > then, it's arguable that you're still descending into the *path*, it's > just that the path is relative and moves up the directory tree. I seem to use it the other way around as well. Paths are just a bit like Ruby's class hierarchy and when trying to walk up to find some related files, I use something like this: class Pathname # Calls the _block_ for every successive parent directory of the # directory path until the root (absolute path) or +.+ (relative path) # is reached. def each_ancestor(&block) # :yield: dir cur_dir = self until cur_dir.root? or cur_dir == Pathname.new(".") cur_dir = cur_dir.parent yield cur_dir end end end # class Pathname > The terminology then matches the common computer science terminology; > e.g. "depth-first recursive descent". Maybe both ascend and descend are nice to have, although their niches are probably different. > I'm also curious to know what the real-world use case is for this > method. I can't recall ever having wanted to descend a single path > component-by-component. I use the above method to find a file that includes a file for the given Pathname object, for that I have to look in the current directory and up, and up, and up... Paul -- Student @ Eindhoven | email: paul@luon.net University of Technology, The Netherlands | JID: paul@luon.net >>> Using the Power of Debian GNU/Linux <<< | GnuPG key ID: 0x50064181