Sha256: 2a102d6c953a652c51364e74e2c45ec23acca192597d03285cc8b5a455df2a45

Contents?: true

Size: 1.9 KB

Versions: 4

Compression:

Stored size: 1.9 KB

Contents

#
#--
# Ronin - A Ruby platform designed for information security and data
# exploration tasks.
#
# Copyright (c) 2006-2008 Hal Brodigan (postmodern.mod3 at gmail.com)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#++
#

require 'pathname'

module Ronin
  class Path < Pathname

    #
    # Creates a new Path object with _n_ number of <tt>..</tt> directories.
    #
    #   Path.up(7)
    #   # => #<Ronin::Path:../../../../../../..>
    #
    #   Path.up(1..3)
    #   # => [#<Ronin::Path:..>, #<Ronin::Path:../..>, #<Ronin::Path:../../..>]
    #
    def self.up(n)
      if n.kind_of?(Integer)
        return self.new(File.join(['..'] * n))
      else
        return n.map { |i| self.up(i) }
      end
    end

    #
    # Joins the _names_ with the path, but does not resolve the resulting
    # path.
    #
    #   Path.up(7).join('etc/passwd')
    #   # => #<Ronin::Path:../../../../../../../etc/passwd>
    #
    def join(*names)
      names = names.map { |name| name.to_s }

      return self.class.new(File.join(self,*names))
    end

    #
    # Joins _name_ with the path, but does not resolve the resulting path.
    #
    #   Path.up(7) / 'etc' / 'passwd'
    #   # => #<Ronin::Path:../../../../../../../etc/passwd>
    #
    def /(name)
      join(name)
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ronin-0.0.9 lib/ronin/path.rb
ronin-0.1.2 lib/ronin/path.rb
ronin-0.1.1 lib/ronin/path.rb
ronin-0.1.0 lib/ronin/path.rb