--- nobu.nokada / softhome.net wrote: > Hi, > > At Sun, 22 May 2005 04:41:25 +0900, > noreply / rubyforge.org wrote in [ruby-core:05065]: > > 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. > > Where is it? It's on the RAA. Here it is (comments removed): module Facade def facade(klass, *methods) methods.flatten! methods = klass.methods(false) if methods.empty? methods.collect!{|m| m.to_s} methods -= self.instance_methods methods.each do |methname| define_method(methname){ || meth = klass.method(methname) if meth.arity.zero? meth.call else meth.call( self ) end } end end end > > require "Win32API" if File::ALT_SEPARATOR > > File::ALT_SEPARATOR is not Windows specific. On what other platform is it not nil? > > def initialize(path) > > @sep = File::ALT_SEPARATOR || > File::SEPARATOR > > > > # Convert forward slashes to backslashes on > Win32 > > path.tr!("/",@sep) if File::ALT_SEPARATOR > > This changes the argument. Yes, I know. That's intentional. > > 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 > > This is destructive operation. I'll fix. > > def +(string) > > unless string.kind_of?(Pathname) > > string = Pathname.new(string) > > end > > > > # Any path plus "." is the same directory > > return self if string == "." > > > > # Use the builtin PathAppend method if on > Windows - much easier > > if File::ALT_SEPARATOR > > buf = 0.chr * MAX_PATH > > buf[0..self.length-1] = self > > @@PathAppend.call(buf, string << 0.chr) > > Also. > > And, I doubt about necessity of Win32API. I don't. UNC pathname issues are too difficult to deal with in a generic manner without getting into lots of conditionals. Regards, Dan __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com