[#3907] Obtaining mode information on an IO object — Jos Backus <jos@...>

The attached patch implements IO#mode. This method returns the mode the IO

17 messages 2004/12/06
[#3909] Re: [patch] Obtaining mode information on an IO object — nobu.nokada@... 2004/12/07

Hi,

[#3910] Re: [patch] Obtaining mode information on an IO object — Jos Backus <jos@...> 2004/12/07

On Tue, Dec 07, 2004 at 09:25:13AM +0900, nobu.nokada@softhome.net wrote:

[#3925] Re: [patch] Obtaining mode information on an IO object — James Britt <ruby@...> 2004/12/09

Jos Backus wrote:

[#4009] cgi.rb -- more GET/POST stuff — mde@...26.com

First of all, I think it would be great, as Eustaquio suggests, to

17 messages 2004/12/23
[#4016] Re: [PATCH] cgi.rb -- more GET/POST stuff — Francis Hwang <sera@...> 2004/12/24

GETs and POSTs are defined to be fairly different actions. I'd read

[#4027] Allowing custom number literal suffixes? — Florian Gro<florgro@...>

Moin!

35 messages 2004/12/27
[#4070] Re: Allowing custom number literal suffixes? — nobu.nokada@... 2005/01/02

Hi,

[#4072] Re: Allowing custom number literal suffixes? — Mathieu Bouchard <matju@...> 2005/01/02

[#4079] Re: Allowing custom number literal suffixes? — Florian Gro<florgro@...> 2005/01/03

Mathieu Bouchard wrote:

[#4081] Re: Allowing custom number literal suffixes? — Mathieu Bouchard <matju@...> 2005/01/03

[#4082] Re: Allowing custom number literal suffixes? — Florian Gro<florgro@...> 2005/01/03

Mathieu Bouchard wrote:

[#4084] Re: Allowing custom number literal suffixes? — Brent Roman <brent@...> 2005/01/04

I'm not sure I would advocate making Ruby's grammar even more

[#4086] Re: Allowing custom number literal suffixes? — Mathieu Bouchard <matju@...> 2005/01/04

[#4033] Garbage collection trouble — Christian Neukirchen <chneukirchen@...>

Hello,

13 messages 2004/12/27

Pathname needs a makeover

From: "Berger, Daniel" <Daniel.Berger@...>
Date: 2004-12-07 20:51:11 UTC
List: ruby-core #3914
Hi all,

I've taken a look at the Pathname class.  In my humble opinion, it needs
a makeover.

Here are a list of how I think it ought to behave:

- A pathname is a string.  Therefore, it should be a subclass of String
- It should be possible to break a pathname down into component parts
and
  iterate over them.  Therefore, it should mixin Enumerable.
- It should not implement methods that raise errors if the pathname does
  not exist.
- It should work for both Unix and Win32 style pathnames.
- It should make private methods private.

Here are the specific problems I have with the current class:

- Many methods are implemented manually that could be avoided by
subclassing the
  String class and mixing in the Enumerable module.
- The to_a method does not return something useful.
- Some methods that I suspect should be private (e.g.
cleanpath_aggressive)
  should be made private.
- Some of the methods require that the pathname actually exist.  IMHO,
since
  a pathname is just a string, and we don't know (or care) if it exists,
we
  should not implement methods that raise an error if it doesn't exist.

Below is an incomplete version of what I had in mind (it still needs
realpath, cleanpath, etc), but you should get the drift.  What do folks
think?

Regards,

Dan

class Pathname < String
   include Enumerable
   VERSION = "1.0.0"
   def initialize(path)
      @path = path
      @sep = (File::ALT_SEPARATOR) && (@path =~ /\\/) ?
File::ALT_SEPARATOR : File::SEPARATOR
   end
   
   def to_a
      a = @path.split(@sep)
      a.delete("")
      a
   end
   
   # Needed for Enumerable
   def each
      yield @path.split(@sep)     
   end
   
   # Return '/' if Unix, or the volume name on Widnows
   def root
      @path.split(@sep).first.empty? ? @path[0].chr :
@path.split(@sep).first
   end
   
   # File::Stat Methods
   def blockdev?
      File.blockdev?(@path)
   end
   
   def chardev?
      File.chardev?(@path)
   end
   
   def directory?
      File.directory?(@path)
   end
   
   def executable?
      File.executable?(@path)
   end
   
   def executable_real?
      File.executable_real?(@path)
   end
   
   def exist?
      File.exist?(@path)
   end
   alias :exists? :exist?
   
   def file?
      File.file?(@path)
   end
   
   def grpowned?
      File.grpowned?(@path)
   end
   
   def owned?
      File.owned?(@path)
   end
   
   def pipe?
      File.pipe?(@path)
   end
   
   def readable?
      File.readable(@path)
   end
   
   def readable_real?
      File.readable_real?(@path)
   end
   
   def setgid?
      File.setgid?(@path)
   end
   
   def setuid?
      File.setuid?(@path)
   end
   
   def size?
      File.size?(@path)
   end
   
   def socket?
      File.socket?(@path)
   end
   
   def sticky?
      File.sticky?(@path)
   end
   
   def symlink?
      File.symlink?(@path)
   end
   
   def world_readable?
      File.world_readable?(@path)
   end
   
   def world_writable?
      File.world_writable?(@path)
   end
   
   def writable?
      File.writable?(@path)
   end
   
   def writable_real?
      File.writable_real?(@path)
   end
   
   def zero?
      File.zero?(@path)
   end     
end


In This Thread

Prev Next