class Build::Files::Directory

def self.join(*args)

def self.join(*args)
	self.new(Path.join(*args))
end

def each

def each
	return to_enum(:each) unless block_given?
	
	# We match both normal files with * and dotfiles with .?*
	Dir.glob(@root + "**/{*,.?*}") do |path|
		yield Path.new(path, @root)
	end
end

def eql?(other)

def eql?(other)
	self.class.eql?(other.class) and @root.eql?(other.root)
end

def hash

def hash
	@root.hash
end

def include?(path)

def include?(path)
	# Would be true if path is a descendant of full_path.
	path.start_with?(@root)
end

def initialize(root)

def initialize(root)
	@root = root
end

def rebase(root)

def rebase(root)
	self.class.new(@root.rebase(root))
end

def root

def root
	@root
end

def roots

def roots
	[root]
end

def to_path

def to_path
	@root
end

def to_s

def to_s
	to_str
end

def to_str

Convert a Directory into a String, can be used as an argument to a command.
def to_str
	@root.to_str
end