public
Description: A replacement for Ruby's builtin Pathname, which is unbearably slow
Homepage: http://github.com/stouset/pathname3
Clone URL: git://github.com/stouset/pathname3.git
name age message
file CHANGES Wed Jun 11 13:03:17 -0700 2008 Dir#glob added [stouset]
file LICENSE Tue May 20 08:52:04 -0700 2008 MIT license added [stouset]
file README Thu Jun 05 11:06:31 -0700 2008 Usage information [stouset]
file Rakefile Thu Jun 05 11:06:12 -0700 2008 Rakefile added [stouset]
directory lib/ Wed Jun 11 13:03:17 -0700 2008 Dir#glob added [stouset]
file pathname3.gemspec Wed Jun 04 09:34:55 -0700 2008 Changes to satisfy github building requirements [stouset]
directory test/ Thu Jun 05 11:06:31 -0700 2008 Usage information [stouset]
README
= pathname3

This library is a replacement for the venerable pathname and pathname2
libraries.

The original implementation of pathname is extremely slow, and
instantiates extreme numbers of objects for relatively simple operations.
Twenty or so Pathname instantiations on some method calls is relatively
common.

An implementation by Daniel J. Berger, pathname2, improved on the original
significantly, adding Windows support, a Facade implementation, and a String-
based implementation. While his version is faster, it's still very slow at
instantiation. And it's Facade implementation misses some odd case methods
like Pathname#join.

This version will focus on being fast and lightweight, while still being pure
Ruby. Windows support will be forthcoming once I have access to a Windows
development machine. Until then, patches adding Windows compatibility are
welcome.

== Installation

You can install pathname3 through Rubygems. The gem is hosted on GitHub, and
can be installed via

  $ sudo gem install --source http://gems.github.com/ stouset-pathname3

== Usage

  require 'pathname3'

  p = '~/foo'.to_path # => "~/foo"
  p.absolute?         # => false
  p.relative?         # => true
  p.exists?           # => false

  p = p.absolute                   # => "/Users/stouset/foo"
  p.absolute?                      # => true
  p.relative?                      # => false
  p.relative_path_from('/Users')   # => "stouset/foo"
  p.relative_path_from('/Library') # => "../Users/stouset/foo"
  p.split                          # => ["/Users/stouset", "foo"]
  p.touch                          # => "/Users/stouset/foo"
  p.ctime                          # => Thu Jun 05 14:00:01 -0400 2008
  p.delete                         # => true
  
== Contribution

The pathname3 project is hosted on GitHub.

  http://github.com/stouset/pathname3/

To clone the repository, simply run:

  git clone git://github.com/stouset/pathname3.git

== License

pathname3 is available under the MIT license.

:include: LICENSE