### Home Classes Methods

### In Files

- lib/facets/pathname.rb

### Parent

Object

### Methods

- ::/
- ::[]
- ::home
- ::null
- ::root
- ::work
- #empty?
- #glob
- #glob_first
- #glob_flags
- #glob_relative
- #include?
- #outofdate?
- #rootname
- #split_root
- #uptodate?
- #visit

### Files

- README.rdoc

### Class/Module Index

Quicksearch

- Random
- Random::ArrayExtensions
- Random::HashExtensions
- Random::IntegerExtensions
- Random::NumericExtensions
- Random::RangeExtensions
- Random::StringExtensions
- Random::StringExtensions::Self
- FileUtils
- FileUtils::DryRun
- FileUtils::NoWrite
- FileUtils::Verbose
- Digest
- Digest::Class
- Digest::Instance
- Multiton
- Multiton::Inclusive
- Multiton::MetaMethods
- URI
- URI::Hash
- URI::Kernel
- Argvector
- Argvector
- ERB
- ERB::OpenTemplate
- Enumerable
- Enumerable::Arguments
- GetoptLong
- GetoptLong::DSL
- Memoizable
- Memoizable::Copy
- Numeric
- Numeric::Multipliers
- Object
- Object::ArgVector
- Timer
- Timer::Dummy
- Array
- BasicObject
- CGI
- Cloneable
- Continuation
- Date
- DateTime
- Equitable
- File
- Find
- Hash
- Instantiable
- Integer
- Interval
- Kernel
- Math
- Module
- Net
- NilClass
- NullClass
- OpEsc
- OpenStruct
- Pathname
- Platform
- Range
- RbConfig
- Set
- Shellwords
- String
- StringScanner
- Time
- Tuple
- YAML
- Zlib

No matching classes.

# Pathname

### Public Class Methods

/(path) click to toggle source

Start a path. Another alias for new.

    Pathname / 'usr'

    # File lib/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/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/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/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/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/pathname.rb, line 64
    def self.work
      Pathname.new('.')
    end

### Public Instance Methods

empty?() click to toggle source

    # File lib/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/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/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/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/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/pathname.rb, line 150
    def outofdate?(*sources)
      ::FileUtils.outofdate?(to_s, sources.flatten)
    end

rootname() click to toggle source

    # File lib/facets/pathname.rb, line 88
    def rootname
      self.class.new(File.rootname(to_s))
    end

split_root() click to toggle source

    # File lib/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/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/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/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.