Parent

Files

Pathname

Public Class Methods

/(path) click to toggle source

Start a path. Another alias for new.

Pathname / 'usr'
# File lib/facets/standard/facets/pathname.rb, line 45
def self./(path)
  new(path)
end
[](path) click to toggle source

Alternate to Pathname#new.

Pathname['/usr/share']
# File lib/facets/standard/facets/pathname.rb, line 37
def self.[](path)
  new(path)
end
home() click to toggle source

Home constant for building paths from root directory onward.

TODO: Pathname#home needs to be more robust.

# File lib/facets/standard/facets/pathname.rb, line 58
def self.home
  Pathname.new('~')
end
null() click to toggle source

Platform dependent null device.

CREDIT Daniel Burger

# File lib/facets/standard/facets/pathname.rb, line 71
def self.null
  case RUBY_PLATFORM
  when /mswin/
    'NUL'
  when /amiga/
    'NIL:'
  when /openvms/
    'NL:'
  else
    '/dev/null'
  end
end
root() click to toggle source

Root constant for building paths from root directory onward.

# File lib/facets/standard/facets/pathname.rb, line 50
def self.root
  Pathname.new('/')
end
work() click to toggle source

Work constant for building paths from root directory onward.

# File lib/facets/standard/facets/pathname.rb, line 64
def self.work
  Pathname.new('.')
end

Public Instance Methods

empty?() click to toggle source
# File lib/facets/standard/facets/pathname.rb, line 140
def empty?
  Dir.glob(::File.join(to_s, '*')).empty?
end
glob(match, *opts) click to toggle source

Glob pathnames.

# File lib/facets/standard/facets/pathname.rb, line 99
def glob(match, *opts)
  flags = glob_flags(opts)
  Dir.glob(::File.join(self.to_s, match), flags).collect{ |m| self.class.new(m) }
end
glob_first(match, *opts) click to toggle source

Return the first glob match.

DEPRECATE: While slightly faster then glob().first, not really worth it unless this can be rewritten to shortcut on first match (using fnmatch?). In wich case, is there a better name for this method?

# File lib/facets/standard/facets/pathname.rb, line 109
def glob_first(match, *opts)
  flags = glob_flags(opts)
  file = ::Dir.glob(::File.join(self.to_s, match), flags).first
  file ? self.class.new(file) : nil
end
glob_relative(match, *opts) click to toggle source

Return globbed matches with pathnames relative to the current pathname.

# File lib/facets/standard/facets/pathname.rb, line 116
def glob_relative(match, *opts)
  flags = glob_flags(opts)
  files = Dir.glob(::File.join(self.to_s, match), flags)
  files = files.map{ |f| f.sub(self.to_s.chomp('/') + '/', '') }
  files.collect{ |m| self.class.new(m) }
end
include?(pattern,*opts) click to toggle source

Does a directory contain a matching entry? Or if the pathname is a file, same as fnmatch.

# File lib/facets/standard/facets/pathname.rb, line 222
def include?(pattern,*opts)
  if directory?
    glob_first(pattern,*opts)
  else
    fnmatch(pattern,*opts)
  end
end
outofdate?(*sources) click to toggle source
# File lib/facets/standard/facets/pathname.rb, line 150
def outofdate?(*sources)
  ::FileUtils.outofdate?(to_s, sources.flatten)
end
rootname() click to toggle source
# File lib/facets/standard/facets/pathname.rb, line 88
def rootname
  self.class.new(File.rootname(to_s))
end
split_root() click to toggle source
# File lib/facets/standard/facets/pathname.rb, line 93
def split_root
  head, tail = *::File.split_root(to_s)
  [self.class.new(head), self.class.new(tail)]
end
uptodate?(*sources) click to toggle source
# File lib/facets/standard/facets/pathname.rb, line 145
def uptodate?(*sources)
  ::FileUtils.uptodate?(to_s, sources.flatten)
end
visit => yield each file click to toggle source
visit(all: true) => yield visited directories as well
visit(hidden: true) => yield hidden files and directories as well

Recursively visit a directory located by its path, yielding each resource as its full matching pathname object. If called on a file, yield the file.

Example use case:

# Locate any file but *.haml within app/**/*
Pathname.new("app").visit do |f|
  next unless f.to_s =~ /\.haml$/
  f
end

TODO: Use map instead of each ?

CREDIT: Jean-Denis Vauguet

# File lib/facets/standard/facets/pathname.rb, line 173
def visit(options = {:all => false, :hidden => false})
  if self.directory?
    children.each do |entry|
      next if entry.basename.to_s[0] == "." && !options[:hidden]
      yield(entry) unless entry.directory? && !options[:all]
      ##entry.visit(:all => options[:all]) { |sub_entry| yield sub_entry } if entry.directory?
      entry.visit(:all => options[:all], :hidden => options[:hidden]) do |sub_entry|
        yield(sub_entry)
      end if entry.directory?
    end
  else
    yield self
  end
end

Private Instance Methods

glob_flags(opts) click to toggle source
# File lib/facets/standard/facets/pathname.rb, line 125
def glob_flags(opts)
  flags = 0
  opts.each do |opt|
    case opt when Symbol, String
      flags += ::File.const_get("FNM_#{opt}".upcase)
    else
      flags += opt
    end
  end
  flags
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.