From: Tanaka Akira Date: 2005-05-23T19:52:36+09:00 Subject: Re: [ ruby-Patches-1939 ] Pathname, totally revamped In article <200505211934.j4LJYaJt003878@rubyforge.org>, noreply@rubyforge.org writes: > * The cleanpath method works differently. How different? > The 'facade' requirement can be removed and that module can be inlined if you don't like the dependency. It's only about 20 lines of code. Is it possible to document the methods defined by facade using RDoc? > # Convert forward slashes to backslashes on Win32 > path.tr!("/",@sep) if File::ALT_SEPARATOR I think it's not Rubyish. See [ruby-talk:52429]. > # Returns the root directory of the path, or '.' if there is no root > # directory. > # > # On Unix, this means the '/' character. On Win32 systems, this can > # refer to the drive letter, or the server and share path if the path > # is a UNC path. > def root > dir = "." > if File::ALT_SEPARATOR > # We only want the portion up to the first '\0' > if @@PathStripToRoot.call(self) > 0 > dir = self.split(0.chr).first > end > else > dir = File.dirname(self) > while dir != "/" && dir != "." > dir = File.dirname(dir) > end > end > dir = "." if dir.empty? > dir > end The root method returns a string (not pathname). Is it intentional? In article <20050522135045.25083.qmail@web50301.mail.yahoo.com>, Daniel Berger writes: > First, "+" works as you would expect. > Pathname.new("a") + Pathname.new("b") results in > "a/b". If Pathname inherits String, Pathname is-a String. So some people (in some context) that Pathname.new("a") + Pathname.new("b") results in "ab" as String. It is impossible to fulfill both "a/b" and "ab". -- Tanaka Akira