### Home Classes Methods

### In Files

- lib/facets/filetest/safe.rb
- lib/facets/filetest/relative.rb
- lib/facets/filetest/contains.rb
- lib/facets/filetest/root.rb
- lib/facets/filetest/separator_pattern.rb

### Methods

- #absolute?
- #chop_basename
- #contains?
- #relative?
- #root?
- #safe?

### Files

- README.rdoc

### Class/Module Index

Quicksearch

- Lazy
- Lazy::Future
- Lazy::Promise
- Lazy::Promise::DIVERGES
- Lazy::PromiseSafe
- Enumerable
- Enumerable::Recursor
- Method
- Method::Composition
- Module
- Module::InstanceFunction
- Array
- Binding
- Class
- Comparable
- Denumerable
- Denumerator
- Dir
- Enumerator
- Exception
- Facets
- FalseClass
- File
- FileTest
- Fixnum
- Float
- Functor
- Hash
- Indexable
- Instance
- Integer
- Kernel
- MatchData
- NA
- NilClass
- Numeric
- Object
- ObjectSpace
- Proc
- Process
- Range
- Regexp
- String
- Struct
- Symbol
- Time
- TrueClass
- UnboundMethod

No matching classes.

# FileTest

### Constants

SEPARATOR_PATTERN

### Public Instance Methods

absolute?(path) click to toggle source

Predicate method for testing whether a path is absolute. It returns `true` if the pathname begins with a slash.

    # File lib/facets/filetest/relative.rb, line 9
    def absolute?(path)
      !relative?(path)
    end

chop_basename(path) click to toggle source

List File.split, but preserves the file separators.

    FileTest.chop_basename('/usr/lib') #=> ['/usr/', 'lib']
    FileTest.chop_basename('/') #=> nil

Returns Array of `[pre-basename, basename]` or `nil`.

This method is here simply to support the relative? and absolute? methods.

    # File lib/facets/filetest/relative.rb, line 29
    def chop_basename(path)
      base = File.basename(path)
      if /\A#{SEPARATOR_PATTERN}?\z/ =~ base
        return nil
      else
        return path[0, path.rindex(base)], base
      end
    end

contains?(child, parent=Dir.pwd) click to toggle source

Does the `parent` contain the `child`?

    # File lib/facets/filetest/contains.rb, line 6
    def contains?(child, parent=Dir.pwd)
      parent = File.expand_path(parent)
      child = File.expand_path(child)
      child.sub(parent,'') != child
    end

relative?(path) click to toggle source

The opposite of absolute?

    # File lib/facets/filetest/relative.rb, line 14
    def relative?(path)
      while r = chop_basename(path.to_s)
        path, basename = r
      end
      path == ''
    end

root?(dir=nil) click to toggle source

Is the specified directory the root directory?

CREDIT: Jeffrey Schwab

    # File lib/facets/filetest/root.rb, line 9
    def root?(dir=nil)
      pth = File.expand_path(dir||Dir.pwd)
      return true if pth == '/'
      return true if pth =~ /^(\w:)?\/$/
      false
    end

safe?(path) click to toggle source

Is a path considered reasonably "safe"?

Do not mistake this for a perfect solution!

    # File lib/facets/filetest/safe.rb, line 10
    def safe?(path)
      case path
      when /\A(#{SEPARATOR_PATTERN}|\~)(#{SEPARATOR_PATTERN}|\*)+/
        false
      else
        true
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.